diff --git a/ext/node/lib.rs b/ext/node/lib.rs index 36f0fede9a17e2..3c19d30b178b67 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -282,6 +282,7 @@ deno_core::extension!(deno_node, ops::os::op_node_os_username

, ops::os::op_geteuid

, ops::os::op_cpus

, + ops::os::op_process_abort, op_node_build_os, op_node_is_promise_rejected, op_npm_process_state, diff --git a/ext/node/ops/os/mod.rs b/ext/node/ops/os/mod.rs index 4fadc1ff83c9e9..bba4ab900ae7dd 100644 --- a/ext/node/ops/os/mod.rs +++ b/ext/node/ops/os/mod.rs @@ -75,6 +75,11 @@ where Ok(euid) } +#[op2(fast)] +pub fn op_process_abort() { + std::process::abort(); +} + #[op2] #[serde] pub fn op_cpus

(state: &mut OpState) -> Result, AnyError> diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index a85351d4bf7054..449a85c5ecb6bc 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -98,6 +98,10 @@ export const exit = (code?: number | string) => { process.reallyExit(process.exitCode || 0); }; +export const abort = () => { + ops.op_process_abort(); +}; + function addReadOnlyProcessAlias( name: string, option: string, @@ -415,6 +419,9 @@ class Process extends EventEmitter { /** https://nodejs.org/api/process.html#process_process_exit_code */ exit = exit; + /** https://nodejs.org/api/process.html#processabort */ + abort = abort; + // Undocumented Node API that is used by `signal-exit` which in turn // is used by `node-tap`. It was marked for removal a couple of years // ago. See https://github.com/nodejs/node/blob/6a6b3c54022104cc110ab09044a2a0cecb8988e7/lib/internal/bootstrap/node.js#L172