Compatibility 
ESMitter is a fork of the popular EventEmitter3, but natively TypeScript, ESM-only and with more modern tooling. The complete codebase has been converted to TypeScript and EcmaScript module syntax (ESM). ESMitter is currently less performant than EventEmitter3, but still fast with millions of operations per second.
Compatibility with Node.js' EventEmitter 
The module is API compatible with the EventEmitter that ships by default with Node.js but there are some slight differences:
- Domain support has been removed.
 - We do not 
throwan error when you emit anerrorevent and nobody is listening. - The 
newListenerandremoveListenerevents have been removed as they are useful only in some uncommon use-cases. - The 
setMaxListeners,getMaxListeners,prependListenerandprependOnceListenermethods are not available. - Support for custom context for events so there is no need to use 
fn.bind. - The 
removeListenermethod removes all matching listeners, not only the first. 
Compatibility with EventEmitter3 
ESMitter is designed to be a drop-in replacement for EventEmitter3, maintaining compatibility with its API. Unlike EventEmitter3, ESMitter is strongly typed, so while your function calls can remain unchanged, you will need to provide type definitions for your events.
Known incompatibilities with EventEmitter3 
- The 
listenerCount()method requires an event name as the first argument and will thus not return the number of listeners for all events combined. 
Benchmarks 
The EventEmitter3 library comes with benchmarks that compare its performance with some available alternatives. The results can be found here: https://github.com/tillsanders/esm-itter/blob/main/benchmarks/README.md
Compatibility with Deno 
ESMitter is fully compatible with Deno, as it is written in TypeScript and uses EcmaScript modules. It is available via the jsr.io registry, allowing you to seamlessly import it in your Deno projects.