diff --git a/moli-renderer-v8/src/worker/thread/mod.rs b/moli-renderer-v8/src/worker/thread/mod.rs index f42bcd7bf9..f4896d14e7 100644 --- a/moli-renderer-v8/src/worker/thread/mod.rs +++ b/moli-renderer-v8/src/worker/thread/mod.rs @@ -2677,7 +2677,16 @@ async fn worker_main( callback_context: None, exception: None, }; - if !dispatch_worker_error_event(scope, global, &report, None, &script_url) { + // Propagation to the owner's global uses omitError: the + // child exception cannot cross the worker agent boundary. + let omitted_error = v8::null(scope).into(); + if !dispatch_worker_error_event( + scope, + global, + &report, + Some(omitted_error), + &script_url, + ) { report_exception_to_parent( &report, &script_url, diff --git a/moli-renderer-v8/src/worker/thread/tests/lifecycle/worker_errors_and_teardown.rs b/moli-renderer-v8/src/worker/thread/tests/lifecycle/worker_errors_and_teardown.rs index 6987265257..1a4d626be5 100644 --- a/moli-renderer-v8/src/worker/thread/tests/lifecycle/worker_errors_and_teardown.rs +++ b/moli-renderer-v8/src/worker/thread/tests/lifecycle/worker_errors_and_teardown.rs @@ -899,7 +899,7 @@ async fn nested_worker_unhandled_error_routes_through_parent_worker_onerror() { postMessage({ messageIncludesBoom: String(message).includes("child-boom"), filenameIncludesDataUrl: String(filename).includes("data:text/javascript"), - errorIsUndefined: error === undefined + errorIsNull: error === null }); close(); return true; @@ -916,7 +916,7 @@ async fn nested_worker_unhandled_error_routes_through_parent_worker_onerror() { .expect("channel closed"); assert_eq!( expect_post_json(msg), - r#"{"messageIncludesBoom":true,"filenameIncludesDataUrl":true,"errorIsUndefined":true}"# + r#"{"messageIncludesBoom":true,"filenameIncludesDataUrl":true,"errorIsNull":true}"# ); }