summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolan McMahon <caolan@caolanmcmahon.com>2013-01-31 14:00:32 +0000
committerCaolan McMahon <caolan@caolanmcmahon.com>2013-01-31 14:00:32 +0000
commit25c776de9d5bb5791a9c40030b1be7cfa26c1ead (patch)
tree82ae32892b57311b4348f41033727f3e8bdfd270
parent089d94b3ac96b3a1a1aab42672f793c1b2dbfe46 (diff)
downloadasync-25c776de9d5bb5791a9c40030b1be7cfa26c1ead.tar.gz
force nextTick on auto calls to prevent double task execution when synchronous
-rw-r--r--lib/async.js6
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);
}
};