summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Early <alex@npmjs.com>2018-07-10 21:16:45 -0700
committerAlexander Early <alex@npmjs.com>2018-07-10 21:16:45 -0700
commitaa1ec94791542df69c3b22c071bd1e9e77bcb42f (patch)
treeacf5165333d405f1abc54438fe8a1cf1fe2f5759
parent8567a7fd6c81ece8fcb2fbc4be29db18f454cee8 (diff)
downloadasync-generator-support.tar.gz
tighten up implementationasync-generator-support
-rw-r--r--lib/internal/asyncEachOfLimit.js10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/internal/asyncEachOfLimit.js b/lib/internal/asyncEachOfLimit.js
index a34bf0a..403915b 100644
--- a/lib/internal/asyncEachOfLimit.js
+++ b/lib/internal/asyncEachOfLimit.js
@@ -10,15 +10,17 @@ export default function asyncEachOfLimit(generator, limit, iteratee, callback) {
function replenish() {
//console.log('replenish')
- if (running >= limit || awaiting) return
+ if (running >= limit || awaiting || done) return
//console.log('replenish awaiting')
awaiting = true
generator.next().then(({value, done: iterDone}) => {
//console.log('got value', value)
+ if (canceled || done) return
awaiting = false
if (iterDone) {
done = true;
if (running <= 0) {
+ //console.log('done nextCb')
callback(null)
}
return;
@@ -32,24 +34,26 @@ export default function asyncEachOfLimit(generator, limit, iteratee, callback) {
function iterateeCallback(err, result) {
//console.log('iterateeCallback')
- if (canceled) return
running -= 1;
+ if (canceled) return
if (err) return handleError(err)
if (err === false) {
done = true;
canceled = true;
+ return
}
if (result === breakLoop || (done && running <= 0)) {
done = true;
- //console.log('done')
+ //console.log('done iterCb')
return callback(null);
}
replenish()
}
function handleError(err) {
+ if (canceled) return
awaiting = false
done = true
callback(err)