summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/isolate.rs9
-rw-r--r--src/libdeno.rs1
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,