@@ -158,11 +158,13 @@ myEmitter.emit('error', new Error('whoops!'));
158158```
159159
160160It is possible to monitor ` 'error' ` events without consuming the emitted error
161- by installing a listener using the symbol ` errorMonitor ` .
161+ by installing a listener using the symbol ` events. errorMonitor` .
162162
163163``` js
164- const myEmitter = new MyEmitter ();
165- myEmitter .on (EventEmitter .errorMonitor , (err ) => {
164+ const { EventEmitter , errorMonitor } = require (' events' );
165+
166+ const myEmitter = new EventEmitter ();
167+ myEmitter .on (errorMonitor, (err ) => {
166168 MyMonitoringTool .log (err);
167169});
168170myEmitter .emit (' error' , new Error (' whoops!' ));
@@ -205,12 +207,13 @@ ee2.on('something', async (value) => {
205207ee2[Symbol .for (' nodejs.rejection' )] = console .log ;
206208```
207209
208- Setting ` EventEmitter .captureRejections = true` will change the default for all
210+ Setting ` events .captureRejections = true` will change the default for all
209211new instances of ` EventEmitter ` .
210212
211213``` js
212- EventEmitter .captureRejections = true ;
213- const ee1 = new EventEmitter ();
214+ const events = require (' events' );
215+ events .captureRejections = true ;
216+ const ee1 = new events.EventEmitter ();
214217ee1 .on (' something' , async (value ) => {
215218 throw new Error (' kaboom' );
216219});
@@ -306,106 +309,6 @@ changes:
306309
307310The ` 'removeListener' ` event is emitted * after* the ` listener ` is removed.
308311
309- ### ` EventEmitter.listenerCount(emitter, eventName) `
310- <!-- YAML
311- added: v0.9.12
312- deprecated: v3.2.0
313- -->
314-
315- > Stability: 0 - Deprecated: Use [ ` emitter.listenerCount() ` ] [ ] instead.
316-
317- * ` emitter ` {EventEmitter} The emitter to query
318- * ` eventName ` {string|symbol} The event name
319-
320- A class method that returns the number of listeners for the given ` eventName `
321- registered on the given ` emitter ` .
322-
323- ``` js
324- const myEmitter = new EventEmitter ();
325- myEmitter .on (' event' , () => {});
326- myEmitter .on (' event' , () => {});
327- console .log (EventEmitter .listenerCount (myEmitter, ' event' ));
328- // Prints: 2
329- ```
330-
331- ### ` EventEmitter.defaultMaxListeners `
332- <!-- YAML
333- added: v0.11.2
334- -->
335-
336- By default, a maximum of ` 10 ` listeners can be registered for any single
337- event. This limit can be changed for individual ` EventEmitter ` instances
338- using the [ ` emitter.setMaxListeners(n) ` ] [ ] method. To change the default
339- for * all* ` EventEmitter ` instances, the ` EventEmitter.defaultMaxListeners `
340- property can be used. If this value is not a positive number, a ` RangeError `
341- is thrown.
342-
343- Take caution when setting the ` EventEmitter.defaultMaxListeners ` because the
344- change affects * all* ` EventEmitter ` instances, including those created before
345- the change is made. However, calling [ ` emitter.setMaxListeners(n) ` ] [ ] still has
346- precedence over ` EventEmitter.defaultMaxListeners ` .
347-
348- This is not a hard limit. The ` EventEmitter ` instance will allow
349- more listeners to be added but will output a trace warning to stderr indicating
350- that a "possible EventEmitter memory leak" has been detected. For any single
351- ` EventEmitter ` , the ` emitter.getMaxListeners() ` and ` emitter.setMaxListeners() `
352- methods can be used to temporarily avoid this warning:
353-
354- ``` js
355- emitter .setMaxListeners (emitter .getMaxListeners () + 1 );
356- emitter .once (' event' , () => {
357- // do stuff
358- emitter .setMaxListeners (Math .max (emitter .getMaxListeners () - 1 , 0 ));
359- });
360- ```
361-
362- The [ ` --trace-warnings ` ] [ ] command-line flag can be used to display the
363- stack trace for such warnings.
364-
365- The emitted warning can be inspected with [ ` process.on('warning') ` ] [ ] and will
366- have the additional ` emitter ` , ` type ` and ` count ` properties, referring to
367- the event emitter instance, the event’s name and the number of attached
368- listeners, respectively.
369- Its ` name ` property is set to ` 'MaxListenersExceededWarning' ` .
370-
371- ### ` EventEmitter.errorMonitor `
372- <!-- YAML
373- added:
374- - v13.6.0
375- - v12.17.0
376- -->
377-
378- This symbol shall be used to install a listener for only monitoring ` 'error' `
379- events. Listeners installed using this symbol are called before the regular
380- ` 'error' ` listeners are called.
381-
382- Installing a listener using this symbol does not change the behavior once an
383- ` 'error' ` event is emitted, therefore the process will still crash if no
384- regular ` 'error' ` listener is installed.
385-
386- ### ` EventEmitter.setMaxListeners(n[, ...eventTargets]) `
387- <!-- YAML
388- added: v15.3.0
389- -->
390-
391- * ` n ` {number} A non-negative number. The maximum number of listeners per
392- ` EventTarget ` event.
393- * ` ...eventsTargets ` {EventTarget[ ] |EventEmitter[ ] } Zero or more {EventTarget}
394- or {EventEmitter} instances. If none are specified, ` n ` is set as the default
395- max for all newly created {EventTarget} and {EventEmitter} objects.
396-
397- ``` js
398- const {
399- setMaxListeners ,
400- EventEmitter
401- } = require (' events' );
402-
403- const target = new EventTarget ();
404- const emitter = new EventEmitter ();
405-
406- setMaxListeners (5 , target, emitter);
407- ```
408-
409312### ` emitter.addListener(eventName, listener) `
410313<!-- YAML
411314added: v0.1.26
@@ -496,7 +399,7 @@ added: v1.0.0
496399
497400Returns the current max listener value for the ` EventEmitter ` which is either
498401set by [ ` emitter.setMaxListeners(n) ` ] [ ] or defaults to
499- [ ` EventEmitter .defaultMaxListeners` ] [ ] .
402+ [ ` events .defaultMaxListeners` ] [ ] .
500403
501404### ` emitter.listenerCount(eventName) `
502405<!-- YAML
@@ -852,6 +755,61 @@ class MyClass extends EventEmitter {
852755}
853756```
854757
758+ ## ` events.defaultMaxListeners `
759+ <!-- YAML
760+ added: v0.11.2
761+ -->
762+
763+ By default, a maximum of ` 10 ` listeners can be registered for any single
764+ event. This limit can be changed for individual ` EventEmitter ` instances
765+ using the [ ` emitter.setMaxListeners(n) ` ] [ ] method. To change the default
766+ for * all* ` EventEmitter ` instances, the ` events.defaultMaxListeners `
767+ property can be used. If this value is not a positive number, a ` RangeError `
768+ is thrown.
769+
770+ Take caution when setting the ` events.defaultMaxListeners ` because the
771+ change affects * all* ` EventEmitter ` instances, including those created before
772+ the change is made. However, calling [ ` emitter.setMaxListeners(n) ` ] [ ] still has
773+ precedence over ` events.defaultMaxListeners ` .
774+
775+ This is not a hard limit. The ` EventEmitter ` instance will allow
776+ more listeners to be added but will output a trace warning to stderr indicating
777+ that a "possible EventEmitter memory leak" has been detected. For any single
778+ ` EventEmitter ` , the ` emitter.getMaxListeners() ` and ` emitter.setMaxListeners() `
779+ methods can be used to temporarily avoid this warning:
780+
781+ ``` js
782+ emitter .setMaxListeners (emitter .getMaxListeners () + 1 );
783+ emitter .once (' event' , () => {
784+ // do stuff
785+ emitter .setMaxListeners (Math .max (emitter .getMaxListeners () - 1 , 0 ));
786+ });
787+ ```
788+
789+ The [ ` --trace-warnings ` ] [ ] command-line flag can be used to display the
790+ stack trace for such warnings.
791+
792+ The emitted warning can be inspected with [ ` process.on('warning') ` ] [ ] and will
793+ have the additional ` emitter ` , ` type ` and ` count ` properties, referring to
794+ the event emitter instance, the event’s name and the number of attached
795+ listeners, respectively.
796+ Its ` name ` property is set to ` 'MaxListenersExceededWarning' ` .
797+
798+ ## ` events.errorMonitor `
799+ <!-- YAML
800+ added:
801+ - v13.6.0
802+ - v12.17.0
803+ -->
804+
805+ This symbol shall be used to install a listener for only monitoring ` 'error' `
806+ events. Listeners installed using this symbol are called before the regular
807+ ` 'error' ` listeners are called.
808+
809+ Installing a listener using this symbol does not change the behavior once an
810+ ` 'error' ` event is emitted, therefore the process will still crash if no
811+ regular ` 'error' ` listener is installed.
812+
855813## ` events.getEventListeners(emitterOrTarget, eventName) `
856814<!-- YAML
857815added:
@@ -1061,6 +1019,29 @@ Value: `Symbol.for('nodejs.rejection')`
10611019
10621020See how to write a custom [ rejection handler] [ rejection ] .
10631021
1022+ ## ` events.listenerCount(emitter, eventName) `
1023+ <!-- YAML
1024+ added: v0.9.12
1025+ deprecated: v3.2.0
1026+ -->
1027+
1028+ > Stability: 0 - Deprecated: Use [ ` emitter.listenerCount() ` ] [ ] instead.
1029+
1030+ * ` emitter ` {EventEmitter} The emitter to query
1031+ * ` eventName ` {string|symbol} The event name
1032+
1033+ A class method that returns the number of listeners for the given ` eventName `
1034+ registered on the given ` emitter ` .
1035+
1036+ ``` js
1037+ const { EventEmitter , listenerCount } = require (' events' );
1038+ const myEmitter = new EventEmitter ();
1039+ myEmitter .on (' event' , () => {});
1040+ myEmitter .on (' event' , () => {});
1041+ console .log (listenerCount (myEmitter, ' event' ));
1042+ // Prints: 2
1043+ ```
1044+
10641045## ` events.on(emitter, eventName[, options]) `
10651046<!-- YAML
10661047added:
@@ -1128,6 +1109,29 @@ const ac = new AbortController();
11281109process .nextTick (() => ac .abort ());
11291110```
11301111
1112+ ## ` events.setMaxListeners(n[, ...eventTargets]) `
1113+ <!-- YAML
1114+ added: REPLACEME
1115+ -->
1116+
1117+ * ` n ` {number} A non-negative number. The maximum number of listeners per
1118+ ` EventTarget ` event.
1119+ * ` ...eventsTargets ` {EventTarget[ ] |EventEmitter[ ] } Zero or more {EventTarget}
1120+ or {EventEmitter} instances. If none are specified, ` n ` is set as the default
1121+ max for all newly created {EventTarget} and {EventEmitter} objects.
1122+
1123+ ``` js
1124+ const {
1125+ setMaxListeners ,
1126+ EventEmitter
1127+ } = require (' events' );
1128+
1129+ const target = new EventTarget ();
1130+ const emitter = new EventEmitter ();
1131+
1132+ setMaxListeners (5 , target, emitter);
1133+ ```
1134+
11311135<a id =" event-target-and-event-api " ></a >
11321136## ` EventTarget ` and ` Event ` API
11331137<!-- YAML
@@ -1606,14 +1610,14 @@ to the `EventTarget`.
16061610
16071611[ WHATWG-EventTarget ] : https://dom.spec.whatwg.org/#interface-eventtarget
16081612[ `--trace-warnings` ] : cli.md#cli_trace_warnings
1609- [ `EventEmitter.defaultMaxListeners` ] : #events_eventemitter_defaultmaxlisteners
16101613[ `EventTarget` Web API ] : https://dom.spec.whatwg.org/#eventtarget
16111614[ `EventTarget` error handling ] : #events_eventtarget_error_handling
16121615[ `Event` Web API ] : https://dom.spec.whatwg.org/#event
16131616[ `domain` ] : domain.md
16141617[ `emitter.listenerCount()` ] : #events_emitter_listenercount_eventname
16151618[ `emitter.removeListener()` ] : #events_emitter_removelistener_eventname_listener
16161619[ `emitter.setMaxListeners(n)` ] : #events_emitter_setmaxlisteners_n
1620+ [ `events.defaultMaxListeners` ] : #events_events_defaultmaxlisteners
16171621[ `fs.ReadStream` ] : fs.md#fs_class_fs_readstream
16181622[ `net.Server` ] : net.md#net_class_net_server
16191623[ `process.on('warning')` ] : process.md#process_event_warning
0 commit comments