events, doc: add type checking in defaultMaxListeners getter
requested to merge github/fork/DavidCai1111/events/add-default-max-listeners-type-checking into master
Since EventEmitter.defaultMaxListeners
and emitter.setMaxListeners(n)
are both public APIs listed in the document, so it is reasonable to check EventEmitter.defaultMaxListeners
getter's input like what emitter.setMaxListeners(n)
does to avoid potential confusing results or error messages caused by some userland mistaken input, like:
'use strict'
const E = require('events')
E.defaultMaxListeners = new Proxy({}, { get: () => {} })
let e = new E()
e.addListener('1', function () {})
e.addListener('1', function () {})
// output:
// events.js:260
// if (m && m > 0 && existing.length > m) {
// ^
//
// TypeError: Cannot convert object to primitive value
// at _addListener (events.js:260:18)
// at EventEmitter.addListener (events.js:279:10)
// at Object.<anonymous> (/Users/caiwei/workspace/benchmarks/index.js:7:3)
// at Module._compile (module.js:571:32)
// at Object.Module._extensions..js (module.js:580:10)
// at Module.load (module.js:488:32)
// at tryModuleLoad (module.js:447:12)
// at Function.Module._load (module.js:439:3)
// at Module.runMain (module.js:605:10)
// at run (bootstrap_node.js:425:7)
Checklist
- [-]
make -j4 test
(UNIX), orvcbuild test
(Windows) passes - [-] tests and/or benchmarks are included
- [-] documentation is changed or added
- [-] commit message follows commit guidelines
Affected core subsystem(s)
events, doc