nyks
Version:
nodejs exupery style
36 lines (26 loc) • 680 B
JavaScript
;
//pipe a stream to another, streams might be promises
function pipe(src, dest, options) {
if(src.then) {
return src.then(function(tmp) {
return pipe(tmp, dest, options);
});
}
if(dest.then) {
return dest.then(function(tmp) {
return pipe(src, tmp, options);
});
}
return new Promise(function(resolve, reject) {
src.pipe(dest, options);
src.once('error', function(err) {
dest.removeListener('finish', resolve);
dest.removeListener('close', resolve);
reject(err);
});
if(!("fd" in dest))
dest.once('finish', resolve);
dest.once('close', resolve);
});
}
module.exports = pipe;