Usually when I pipe streams I want to destroy the source if the destination closes.
Since pipe does not do that I kept repeating this
source
.on('close', dest.destroy.bind(dest))
.on('error', dest.destroy.bind(dest))
.pipe(dest)
.on('close', source.destroy.bind(source))
.on('error', source.destroy.bind(source))
I decided to do a small module that does this for me. It is called pump
Using pump you can do the above like so
var pump = require('pump');
pump(source, transform1, transform2, ..., dest, function(err) {
console.log('pipe finished', err);
});
It works with both 0.8 and 0.10 streams.