INTEGRITY Документация

EventEmitter

Одна EventEmitter это объект, который генерирует именованные события, вызывающие срабатывание слушателей.

import { EventEmitter } from "node:events";

const emitter = new EventEmitter();
emitter.on("hello", (...args) => {
	console.log(...args); // 1 2 3
});

emitter.emit("hello", 1, 2, 3);

Реализация в Workers runtime поддерживает весь Node.js EventEmitter API. Сюда входит captureRejections параметр, который позволяет улучшить обработку async-функций в качестве обработчиков событий:

const emitter = new EventEmitter({ captureRejections: true });
emitter.on("hello", async (...args) => {
	throw new Error("boom");
});
emitter.on("error", (err) => {
	// the async promise rejection is emitted here!
});

Подобно Node.js, когда 'error' событие создаётся на EventEmitter а если для него нет обработчика, ошибка будет выброшена немедленно. Однако в Node.js можно добавить обработчик на process объект для 'uncaughtException' событие для перехвата необработанных на глобальном уровне исключений. 'uncaughtException' событие в настоящее время не реализовано в среде выполнения Workers. Настоятельно рекомендуется всегда добавлять 'error' обработчик к любому EventEmitter инстанс.

См. документация Node.js для EventEmitter, где это описано подробнее.