diff options
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r-- | ext/node/lib.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/node/lib.rs b/ext/node/lib.rs index 6d496f001..a623eac11 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -138,6 +138,15 @@ fn op_is_any_arraybuffer(value: serde_v8::Value) -> bool { value.v8_value.is_array_buffer() || value.v8_value.is_shared_array_buffer() } +#[op(fast)] +fn op_node_is_promise_rejected(value: serde_v8::Value) -> bool { + let Ok(promise) = v8::Local::<v8::Promise>::try_from(value.v8_value) else { + return false; + }; + + promise.state() == v8::PromiseState::Rejected +} + deno_core::extension!(deno_node, deps = [ deno_io, deno_fs ], parameters = [P: NodePermissions], @@ -233,6 +242,7 @@ deno_core::extension!(deno_node, ops::http::op_node_http_request<P>, op_node_build_os, op_is_any_arraybuffer, + op_node_is_promise_rejected, ops::require::op_require_init_paths, ops::require::op_require_node_module_paths<P>, ops::require::op_require_proxy_path, |