UNPKG

837 BJavaScriptView Raw
1var noop = function () {}
2
3function abortAll(ary, abort, cb) {
4 var n = ary.length
5 if(!n) return cb(abort)
6 ary.forEach(function (f) {
7 if(f) f(abort, next)
8 else next()
9 })
10
11 function next() {
12 if(--n) return
13 cb(abort)
14 }
15 if(!n) next()
16}
17
18module.exports = function (streams) {
19 return function (abort, cb) {
20 ;(function next () {
21 if(abort)
22 abortAll(streams, abort, cb)
23 else if(!streams.length)
24 cb(true)
25 else if(!streams[0])
26 streams.shift(), next()
27 else
28 streams[0](null, function (err, data) {
29 if(err) {
30 streams.shift() //drop the first, has already ended.
31 if(err === true) next()
32 else abortAll(streams, err, cb)
33 }
34 else
35 cb(null, data)
36 })
37 })()
38 }
39}
40
41
42
43