diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2018-10-12 11:22:52 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-10-12 14:22:52 -0400 |
commit | 45d3b8955de628db0ef051eeb8e351837b4a3b3e (patch) | |
tree | 252bab755760d86cab48502abdabe6ff0c2b9af2 /src | |
parent | c9f95d51da9f6075b1f28a842dc830ec5fe7a30e (diff) |
Fix promise reject issue (#936)
Diffstat (limited to 'src')
-rw-r--r-- | src/isolate.rs | 9 | ||||
-rw-r--r-- | src/libdeno.rs | 1 |
2 files changed, 10 insertions, 0 deletions
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, |