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