---
title: EventEmitter · Cloudflare Workers docs
description: An EventEmitter is an object that emits named events that cause listeners to be called.
lastUpdated: 2024-08-13T19:56:56.000Z
source_url:
  html: https://dpena-content-cleanup.preview.developers.cloudflare.com/workers/runtime-apis/nodejs/eventemitter/index.md
  md: https://dpena-content-cleanup.preview.developers.cloudflare.com/workers/runtime-apis/nodejs/eventemitter/
---

Note

To enable built-in Node.js APIs and polyfills, add the nodejs\_compat compatibility flag to your [Wrangler configuration file](https://developers.cloudflare.com/workers/wrangler/configuration/). This also enables nodejs\_compat\_v2 as long as your compatibility date is 2024-09-23 or later. [Learn more about the Node.js compatibility flag and v2](https://developers.cloudflare.com/workers/configuration/compatibility-flags/#nodejs-compatibility-flag).

An `EventEmitter` is an object that emits named events that cause listeners to be called.

```js
import { EventEmitter } from 'node:events';


const emitter = new EventEmitter();
emitter.on('hello', (...args) => {
  console.log(...args);
});


emitter.emit('hello', 1, 2, 3);
```

The implementation in the Workers runtime fully supports the entire Node.js `EventEmitter` API. This includes the `captureRejections` option that allows improved handling of async functions as event handlers:

```js
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!
});
```

Refer to the [Node.js documentation for `EventEmitter`](https://nodejs.org/api/events.html#class-eventemitter) for more information.
