Skip to main content
EventEmitter.addAbortListener - Node documentation
method EventEmitter.addAbortListener
Unstable

Usage in Deno

import { EventEmitter } from "node:events";
EventEmitter.addAbortListener(
signal: AbortSignal,
resource: (event: Event) => void,
): Disposable

Listens once to the abort event on the provided signal.

Listening to the abort event on abort signals is unsafe and may lead to resource leaks since another third party with the signal can call e.stopImmediatePropagation(). Unfortunately Node.js cannot change this since it would violate the web standard. Additionally, the original API makes it easy to forget to remove listeners.

This API allows safely using AbortSignals in Node.js APIs by solving these two issues by listening to the event such that stopImmediatePropagation does not prevent the listener from running.

Returns a disposable so that it may be unsubscribed from more easily.

import { addAbortListener } from 'node:events';

function example(signal) {
  let disposable;
  try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
    });
  } finally {
    disposable?.[Symbol.dispose]();
  }
}

Parameters

signal: AbortSignal
resource: (event: Event) => void

Return Type

Disposable

Disposable that removes the abort listener.