execa
Version:
Process execution for humans
15 lines (12 loc) • 549 B
JavaScript
import {addAbortListener} from 'node:events';
// Temporarily increase the maximum number of listeners on an eventEmitter
export const incrementMaxListeners = (eventEmitter, maxListenersIncrement, signal) => {
const maxListeners = eventEmitter.getMaxListeners();
if (maxListeners === 0 || maxListeners === Number.POSITIVE_INFINITY) {
return;
}
eventEmitter.setMaxListeners(maxListeners + maxListenersIncrement);
addAbortListener(signal, () => {
eventEmitter.setMaxListeners(eventEmitter.getMaxListeners() - maxListenersIncrement);
});
};