diff --git a/CHANGELOG.md b/CHANGELOG.md index eea8fcf730c..ff58ae5f9a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.13.2 (WiP) + +* add realm id to log on unhandled promises + # 0.13.1 * update quickjs-ng to 4.0.1 diff --git a/src/quickjs_utils/promises.rs b/src/quickjs_utils/promises.rs index 4321794f4a2..358d5bc5971 100644 --- a/src/quickjs_utils/promises.rs +++ b/src/quickjs_utils/promises.rs @@ -232,8 +232,6 @@ unsafe extern "C" fn promise_rejection_tracker( _opaque: *mut ::std::os::raw::c_void, ) { if is_handled == 0 { - log::error!("unhandled promise rejection detected"); - let reason_ref = QuickJsValueAdapter::new( ctx, reason, @@ -242,14 +240,27 @@ unsafe extern "C" fn promise_rejection_tracker( "promises::promise_rejection_tracker reason", ); let reason_str_res = functions::call_to_string(ctx, &reason_ref); - match reason_str_res { - Ok(reason_str) => { - log::error!("unhandled promise rejection - reason: {}", reason_str); - } - Err(e) => { - log::error!("could not get reason: {}", e); + QuickJsRuntimeAdapter::do_with(|rt| { + let realm = rt.get_quickjs_context(ctx); + let realm_id = realm.get_realm_id(); + + match reason_str_res { + Ok(reason_str) => { + log::error!( + "[{}] unhandled promise rejection, reason: {}", + realm_id, + reason_str + ); + } + Err(e) => { + log::error!( + "[{}] unhandled promise rejection, could not get reason: {}", + realm_id, + e + ); + } } - } + }); } }