aboutsummaryrefslogtreecommitdiffhomepage
path: root/node_modules/after/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/after/index.js')
-rw-r--r--node_modules/after/index.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/node_modules/after/index.js b/node_modules/after/index.js
new file mode 100644
index 0000000..ec24879
--- /dev/null
+++ b/node_modules/after/index.js
@@ -0,0 +1,28 @@
+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() {}