diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js index 4bd3b4da3..799ca02df 100644 --- a/src/NetscriptFunctions.js +++ b/src/NetscriptFunctions.js @@ -229,7 +229,6 @@ function NetscriptFunctions(workerScript) { workerScript.scriptRef.log("Sleeping for " + time + " milliseconds"); } return netscriptDelay(time, workerScript).then(function() { - if (workerScript.env.stopFlag) {return Promise.reject(workerScript);} return Promise.resolve(true); }); }, diff --git a/src/NetscriptWorker.js b/src/NetscriptWorker.js index e024d729c..0b5aa2a81 100644 --- a/src/NetscriptWorker.js +++ b/src/NetscriptWorker.js @@ -73,6 +73,13 @@ function startJsScript(workerScript) { // This function unfortunately cannot be an async function, because we don't // know if the original one was, and there's no way to tell. return function (...args) { + // Wrap every netscript function with a check for the stop flag. + // This prevents cases where we never stop because we are only calling + // netscript functions that don't check this. + // This is not a problem for legacy Netscript because it also checks the + // stop flag in the evaluator. + if (workerScript.env.stopFlag) {return Promise.reject(workerScript);} + const msg = "Concurrent calls to Netscript functions not allowed! " + "Did you forget to await hack(), grow(), or some other " + "promise-returning function? (Currently running: %s tried to run: %s)"