What does the events module provide? Show how to emit an event with arguments and listen to it. What happens if an error event has no listener?
Show the explanation
Model answer. The events module provides `EventEmitter`, the observer pattern built into Node. Many core objects (streams, HTTP servers, sockets) are emitters.
import { EventEmitter } from 'node:events';
class OrderService extends EventEmitter {
place(order) {
// ...save the order...
this.emit('placed', order.id, order.total); // extra arguments go to listeners
}
}
const orders = new OrderService();
orders.on('placed', (id, total) => console.log(`order ${id}: ₹${total}`));
orders.once('placed', () => console.log('first order of the day!'));
orders.place({ id: 17, total: 499 });onadds a listener,oncelistens a single time,offremoves one.- Listeners run synchronously, in the order they were added, during
emit. - Event arguments are whatever values you pass to
emitafter the event name. - An
'error'event with no listener throws, and can crash the process, so always listen for'error'on emitters you create or use. - Adding more than 10 listeners to one event prints a memory-leak warning, which usually means listeners are added repeatedly without being removed.
Original UniCircle question. Last reviewed 22 Oct 2026.
