From cb884de2e92a051785ad4bd741153e69d9d2316c Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Tue, 10 May 2022 10:26:57 +0100 Subject: fix(runtime/web_worker): Use biased select when getting module result (#14553) --- runtime/web_worker.rs | 4 ++++ runtime/worker.rs | 1 + 2 files changed, 5 insertions(+) (limited to 'runtime') diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 9f120539c..23281ad68 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -557,6 +557,8 @@ impl WebWorker { let id = self.preload_module(module_specifier, false).await?; let mut receiver = self.js_runtime.mod_evaluate(id); tokio::select! { + biased; + maybe_result = &mut receiver => { debug!("received module evaluate {:#?}", maybe_result); maybe_result.expect("Module evaluation result not provided.") @@ -579,6 +581,8 @@ impl WebWorker { ) -> Result<(), AnyError> { let mut receiver = self.js_runtime.mod_evaluate(id); tokio::select! { + biased; + maybe_result = &mut receiver => { debug!("received worker module evaluate {:#?}", maybe_result); // If `None` is returned it means that runtime was destroyed before diff --git a/runtime/worker.rs b/runtime/worker.rs index 23fe8e4c0..7165b04f0 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -304,6 +304,7 @@ impl MainWorker { ) -> T { loop { tokio::select! { + biased; result = &mut fut => { return result; } -- cgit v1.2.3