1.0.3 • Published 3 years ago

@await/event v1.0.3

Weekly downloads
233
License
MIT
Repository
github
Last release
3 years ago

await-event lets you interact with event emitters using promises (or async-await).

Usage

The basic usage pattern is:

const event = require("@await/event");
const subprocess = spawn("node", ["subprocess.js"]);

const message = await event({ eventEmitter: subprocess, resolveOn: "message", rejectOn:["close", "error"] });

By default, if the event handler was only passed on argument, then it will be returned on success. If it is passed multiple arguments, then an array with all the arguments will be returned instead. If you'd always like an array, pass forceArray true as an option.

If any of the rejected events take place, an EventError will be thrown.

Multiple success events

You can pass an array to resolveOn as well, in which case the return value with be an object with three fields: name, value, and args. Name is the name of the event that succeeded, value is simply the first argument passed to the event handler, and args is all the arguments. That way you can continue using "single return" style:

const { name, value } = await event({ ..., resolveOn: ["a", "b"] });

Timeout

await event({ eventEmitter, ..., timeout: 1000 });

If the appropriate event doesn't transpire before the timeout, a TimeoutError will fire.