diff options
Diffstat (limited to 'core/runtime.rs')
-rw-r--r-- | core/runtime.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/core/runtime.rs b/core/runtime.rs index 8c78be55b..bb77bb25a 100644 --- a/core/runtime.rs +++ b/core/runtime.rs @@ -1831,7 +1831,7 @@ impl JsRuntime { .state(tc_scope) .borrow_mut() .pending_promise_rejections - .remove(&promise_global); + .retain(|(key, _)| key != &promise_global); } } let promise_global = v8::Global::new(tc_scope, promise); @@ -4139,6 +4139,23 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", { } #[tokio::test] + async fn test_unhandled_rejection_order() { + let mut runtime = JsRuntime::new(Default::default()); + runtime + .execute_script_static( + "", + r#" + for (let i = 0; i < 100; i++) { + Promise.reject(i); + } + "#, + ) + .unwrap(); + let err = runtime.run_event_loop(false).await.unwrap_err(); + assert_eq!(err.to_string(), "Uncaught (in promise) 0"); + } + + #[tokio::test] async fn test_set_promise_reject_callback() { static PROMISE_REJECT: AtomicUsize = AtomicUsize::new(0); |