diff --git a/src/ssn/patcher-installer/taskManager.ts b/src/ssn/patcher-installer/taskManager.ts index fcc8451..b145b35 100644 --- a/src/ssn/patcher-installer/taskManager.ts +++ b/src/ssn/patcher-installer/taskManager.ts @@ -4,17 +4,21 @@ export default function taskManager(tasks: Array<() => Promise>, maxConcur let currentlyRunningTasks = 0; const startNewTask = () => { - if (remainingTasks.length === 0 && currentlyRunningTasks === 0) { - return resolve(); + //Exit if we completed all tasks + if (remainingTasks.length === 0) { + if (currentlyRunningTasks === 0) { + return resolve(); + } + } else { + //If there is at least one task left, complete it + const curTask = remainingTasks.pop() as () => Promise; + const curPromise = curTask(); + currentlyRunningTasks += 1; + curPromise.then(() => { + currentlyRunningTasks -= 1; + return startNewTask(); + }); } - - const curTask = remainingTasks.pop() as () => Promise; - const curPromise = curTask(); - currentlyRunningTasks += 1; - curPromise.then(() => { - currentlyRunningTasks -= 1; - return startNewTask(); - }); }; for (let i = 0; i < maxConcurrentTasks; i += 1) {