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