1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| module.exports = after
|
| function after(count, callback, err_cb) {
| var bail = false
| err_cb = err_cb || noop
| proxy.count = count
|
| return (count === 0) ? callback() : proxy
|
| function proxy(err, result) {
| if (proxy.count <= 0) {
| throw new Error('after called too many times')
| }
| --proxy.count
|
| // after first error, rest are passed to err_cb
| if (err) {
| bail = true
| callback(err)
| // future error callbacks will go to error handler
| callback = err_cb
| } else if (proxy.count === 0 && !bail) {
| callback(null, result)
| }
| }
| }
|
| function noop() {}
|
|