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