Wait the first event in a set of event emitters and event pairs, then clean up after itself.
npm install await-first
yarn add await-first
pnpm add await-first
bun add await-first
Wait the first event in a set of event pairs, then clean up after itself.
$ npm install await-first --save
awaitFirst(ee, events)
const EventEmitter = require('events'); const awaitFirst = require('await-first'); async function waitMessageOrClose(ee) { const o = await awaitFirst(ee, [ 'message', 'close' ]); switch (o.event) { case 'message': const msg = o.args[0]; // [ 'hello world' ] console.log('new message =>', msg); break; case 'close': console.log('closed'); break; } } const ee = new EventEmitter(); waitMessageOrClose(ee); setTimeout(() => { ee.emit('message', 'hello world'); }, 1000);
obj.awaitFirst(events)
const net = require('net'); const awaitFirst = require('await-first'); async function connect() { const socket = net.connect(8080, '127.0.0.1'); socket.awaitFirst = awaitFirst; try { // wait `connect` or `error` event await socket.awaitFirst([ 'connect', 'error' ]); } catch (err) { console.log(err); } // ... } connect();