| 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() {} | |