(count, callback, err_cb)
| 2423 | module.exports = after |
| 2424 | |
| 2425 | function after(count, callback, err_cb) { |
| 2426 | var bail = false |
| 2427 | err_cb = err_cb || noop |
| 2428 | proxy.count = count |
| 2429 | |
| 2430 | return (count === 0) |
| 2431 | ? callback() |
| 2432 | : proxy |
| 2433 | |
| 2434 | function proxy(err, result) { |
| 2435 | if (proxy.count <= 0) { |
| 2436 | throw new Error('after called too many times') |
| 2437 | } |
| 2438 | --proxy.count |
| 2439 | |
| 2440 | // after first error, rest are passed to err_cb |
| 2441 | if (err) { |
| 2442 | bail = true |
| 2443 | callback(err) |
| 2444 | // future error callbacks will go to error handler |
| 2445 | callback = err_cb |
| 2446 | } else if (proxy.count === 0 && !bail) { |
| 2447 | callback(null, result) |
| 2448 | } |
| 2449 | } |
| 2450 | } |
| 2451 | |
| 2452 | function noop() {} |
| 2453 |
no test coverage detected