summaryrefslogtreecommitdiff
path: root/cli/ops/worker_host.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-10-06 10:18:22 +0200
committerGitHub <noreply@github.com>2020-10-06 10:18:22 +0200
commitc7c767782538243ded64742dca9b34d6af74d62d (patch)
treee0c4cdaac58f56b09c54476d73f3d5feb419e731 /cli/ops/worker_host.rs
parent40324ff74816a99ea061929ece1c6a4ff3078bc3 (diff)
fix(core): module execution with top level await (#7672)
This commit fixes implementation of top level await in "deno_core". Previously promise returned from module execution was ignored causing to execute modules out-of-order. With this commit promise returned from module execution is stored on "JsRuntime" and event loop is polled until the promise resolves.
Diffstat (limited to 'cli/ops/worker_host.rs')
-rw-r--r--cli/ops/worker_host.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/cli/ops/worker_host.rs b/cli/ops/worker_host.rs
index 9175ca0f1..17e0e397f 100644
--- a/cli/ops/worker_host.rs
+++ b/cli/ops/worker_host.rs
@@ -155,6 +155,13 @@ fn run_worker_thread(
if let Err(e) = result {
let mut sender = worker.internal_channels.sender.clone();
+
+ // If sender is closed it means that worker has already been closed from
+ // within using "globalThis.close()"
+ if sender.is_closed() {
+ return;
+ }
+
sender
.try_send(WorkerEvent::TerminalError(e))
.expect("Failed to post message to host");