diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-10-06 10:18:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-06 10:18:22 +0200 |
commit | c7c767782538243ded64742dca9b34d6af74d62d (patch) | |
tree | e0c4cdaac58f56b09c54476d73f3d5feb419e731 /cli/ops/worker_host.rs | |
parent | 40324ff74816a99ea061929ece1c6a4ff3078bc3 (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.rs | 7 |
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"); |