From 45d3b8955de628db0ef051eeb8e351837b4a3b3e Mon Sep 17 00:00:00 2001 From: "Kevin (Kun) \"Kassimo\" Qian" Date: Fri, 12 Oct 2018 11:22:52 -0700 Subject: Fix promise reject issue (#936) --- src/isolate.rs | 9 +++++++++ src/libdeno.rs | 1 + 2 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/isolate.rs b/src/isolate.rs index 40dff5ed2..5a09b8855 100644 --- a/src/isolate.rs +++ b/src/isolate.rs @@ -195,6 +195,12 @@ impl Isolate { } } + fn check_promise_errors(&self) { + unsafe { + libdeno::deno_check_promise_errors(self.libdeno_isolate); + } + } + // TODO Use Park abstraction? Note at time of writing Tokio default runtime // does not have new_with_park(). pub fn event_loop(&mut self) { @@ -205,7 +211,10 @@ impl Isolate { Err(mpsc::RecvTimeoutError::Timeout) => self.timeout(), Err(e) => panic!("recv_deadline() failed: {:?}", e), } + self.check_promise_errors(); } + // Check on done + self.check_promise_errors(); } fn ntasks_increment(&mut self) { diff --git a/src/libdeno.rs b/src/libdeno.rs index 4417ac544..732c78a21 100644 --- a/src/libdeno.rs +++ b/src/libdeno.rs @@ -33,6 +33,7 @@ extern "C" { pub fn deno_new(cb: DenoRecvCb) -> *const isolate; pub fn deno_delete(i: *const isolate); pub fn deno_last_exception(i: *const isolate) -> *const c_char; + pub fn deno_check_promise_errors(i: *const isolate); pub fn deno_respond( i: *const isolate, user_data: *mut c_void, -- cgit v1.2.3