# pump

pump is a small node module that pipes streams together and destroys all of them if one of them closes.

	npm install pump

[![build status](http://img.shields.io/travis/mafintosh/pump.svg?style=flat)](http://travis-ci.org/mafintosh/pump)

## What problem does it solve?

When using standard `source.pipe(dest)` source will _not_ be destroyed if dest emits close or an error.
You are also not able to provide a callback to tell when then pipe has finished.

pump does these two things for you

## Usage

Simply pass the streams you want to pipe together to pump and add an optional callback

``` js
var pump = require('pump');
var fs = require('fs');

var source = fs.createReadStream('/dev/random');
var dest = fs.createWriteStream('/dev/null');

pump(source, dest, function(err) {
	console.log('pipe finished', err);
});

setTimeout(function() {
	dest.destroy(); // when dest is closed pump will destroy source
}, 1000);
```

You can use pump to pipe more than two streams together as well

``` js
var transform = someTransformStream();

pump(source, transform, anotherTransform, dest, function(err) {
	console.log('pipe finished', err);
});
```

If `source`, `transform`, `anotherTransform` or `dest` closes all of them will be destroyed.

## License

MIT
