From 52a7e883faec351bda651d748f8542660b339497 Mon Sep 17 00:00:00 2001 From: Tissevert Date: Sun, 13 Jan 2019 20:29:48 +0100 Subject: [PATCH] Harden Async's parallel against one call returning several times --- async.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/async.js b/async.js index 53f6952..996771f 100644 --- a/async.js +++ b/async.js @@ -39,13 +39,17 @@ function Async() { var threads = arguments; var pending = threads.length; var results = []; + var returned = []; return function(f) { var useResult = function(i) { return function(x) { - results[i] = x; - pending--; - if(pending < 1) { - f(results); + if(!returned[i]) { + results[i] = x; + returned[i] = true; + pending--; + if(pending < 1) { + f(results); + } } }; };