diff options
author | Caolan McMahon <caolan@caolanmcmahon.com> | 2013-01-31 14:00:32 +0000 |
---|---|---|
committer | Caolan McMahon <caolan@caolanmcmahon.com> | 2013-01-31 14:00:32 +0000 |
commit | 25c776de9d5bb5791a9c40030b1be7cfa26c1ead (patch) | |
tree | 82ae32892b57311b4348f41033727f3e8bdfd270 | |
parent | 089d94b3ac96b3a1a1aab42672f793c1b2dbfe46 (diff) | |
download | async-25c776de9d5bb5791a9c40030b1be7cfa26c1ead.tar.gz |
force nextTick on auto calls to prevent double task execution when synchronous
-rw-r--r-- | lib/async.js | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/async.js b/lib/async.js index b5ba2ea..b3c25d6 100644 --- a/lib/async.js +++ b/lib/async.js @@ -406,7 +406,6 @@ }); _forEach(keys, function (k) { - var fired = false; var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; var taskCallback = function (err) { if (err) { @@ -420,14 +419,14 @@ args = args[0]; } results[k] = args; - taskComplete(); + process.nextTick(taskComplete); } }; var requires = task.slice(0, Math.abs(task.length - 1)) || []; var ready = function () { return _reduce(requires, function (a, x) { return (a && results.hasOwnProperty(x)); - }, true) && !fired; + }, true) && !results.hasOwnProperty(k); }; if (ready()) { task[task.length - 1](taskCallback, results); @@ -436,7 +435,6 @@ var listener = function () { if (ready()) { removeListener(listener); - fired = true; task[task.length - 1](taskCallback, results); } }; |