You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
685 B
JavaScript
29 lines
685 B
JavaScript
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() {}
|