Files
bun.sh/test/js/third_party/express/support/after.ts

37 lines
763 B
TypeScript

/**
* https://www.npmjs.com/package/after
*
* I refuse to install a 30 line function via npm
*/
module.exports = after;
/**
* Invoke a callback after `n` calls
*/
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() {}