@@ -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.16.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: v14.17.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:
@@ -1065,6 +1023,29 @@ Value: `Symbol.for('nodejs.rejection')`
10651023
10661024See how to write a custom [ rejection handler] [ rejection ] .
10671025
1026+ ## ` events.listenerCount(emitter, eventName) `
1027+ <!-- YAML
1028+ added: v0.9.12
1029+ deprecated: v3.2.0
1030+ -->
1031+
1032+ > Stability: 0 - Deprecated: Use [ ` emitter.listenerCount() ` ] [ ] instead.
1033+
1034+ * ` emitter ` {EventEmitter} The emitter to query
1035+ * ` eventName ` {string|symbol} The event name
1036+
1037+ A class method that returns the number of listeners for the given ` eventName `
1038+ registered on the given ` emitter ` .
1039+
1040+ ``` js
1041+ const { EventEmitter , listenerCount } = require (' events' );
1042+ const myEmitter = new EventEmitter ();
1043+ myEmitter .on (' event' , () => {});
1044+ myEmitter .on (' event' , () => {});
1045+ console .log (listenerCount (myEmitter, ' event' ));
1046+ // Prints: 2
1047+ ```
1048+
10681049## ` events.on(emitter, eventName[, options]) `
10691050<!-- YAML
10701051added:
@@ -1132,6 +1113,30 @@ const ac = new AbortController();
11321113process .nextTick (() => ac .abort ());
11331114```
11341115
1116+ ## ` events.setMaxListeners(n[, ...eventTargets]) `
1117+ <!-- YAML
1118+ added: v14.17.0
1119+ -->
1120+
1121+ * ` n ` {number} A non-negative number. The maximum number of listeners per
1122+ ` EventTarget ` event.
1123+ * ` ...eventsTargets ` {EventTarget[ ] |EventEmitter[ ] } Zero or more {EventTarget}
1124+ or {EventEmitter} instances. If none are specified, ` n ` is set as the default
1125+ max for all newly created {EventTarget} and {EventEmitter} objects.
1126+
1127+ ``` js
1128+ const {
1129+ setMaxListeners ,
1130+ EventEmitter
1131+ } = require (' events' );
1132+
1133+ const target = new EventTarget ();
1134+ const emitter = new EventEmitter ();
1135+
1136+ setMaxListeners (5 , target, emitter);
1137+ ```
1138+
1139+ <a id =" event-target-and-event-api " ></a >
11351140## ` EventTarget ` and ` Event ` API
11361141<!-- YAML
11371142added: v14.5.0
@@ -1604,14 +1609,14 @@ to the `EventTarget`.
16041609
16051610[ WHATWG-EventTarget ] : https://dom.spec.whatwg.org/#interface-eventtarget
16061611[ `--trace-warnings` ] : cli.md#cli_trace_warnings
1607- [ `EventEmitter.defaultMaxListeners` ] : #events_eventemitter_defaultmaxlisteners
16081612[ `EventTarget` Web API ] : https://dom.spec.whatwg.org/#eventtarget
16091613[ `EventTarget` error handling ] : #events_eventtarget_error_handling
16101614[ `Event` Web API ] : https://dom.spec.whatwg.org/#event
16111615[ `domain` ] : domain.md
16121616[ `emitter.listenerCount()` ] : #events_emitter_listenercount_eventname
16131617[ `emitter.removeListener()` ] : #events_emitter_removelistener_eventname_listener
16141618[ `emitter.setMaxListeners(n)` ] : #events_emitter_setmaxlisteners_n
1619+ [ `events.defaultMaxListeners` ] : #events_events_defaultmaxlisteners
16151620[ `fs.ReadStream` ] : fs.md#fs_class_fs_readstream
16161621[ `net.Server` ] : net.md#net_class_net_server
16171622[ `process.on('warning')` ] : process.md#process_event_warning
0 commit comments