This package wraps an event emitter object and returns a bluebird promise that is either resolved, or rejected based on what events are fired from the emitter.
Note: Bluebird-Events v2.x is NOT backwards compatible with v1.x see changelog for details
npm install bluebird-events
Optionally run tests:
npm test
import { promisify } from 'bluebird-events'
const someEmitter = new TestEmitter()
const promise = promisify(someEmitter, {
resolve: 'success-event-name',
reject: ['error-event-name', 'error-event-name-2']
})
// Will resolve the promise
someEmitter.emit('success-event-name')
// Will reject the promise with the given error
someEmitter.emit('error-event-name', new Error('Some Error Occurred!'))
emitter
[Object
] - Some object that can emit events (usually inherited from
Events.EventEmitter)
events
[Object
] - Contains a mapping of events to listen for
events.resolve
[String
, Array of Strings
, or Boolean
] - The name for the event that will
cause the promise to resolve (defaults to: 'finish'
)
events.reject
[String
, Array of Strings
, or Boolean
] - The name for the event that will
cause the promise to reject (defaults to: 'error'
)
Returns - a bluebird promise
Note: To disable listening for all resolve or reject events (including default and custom events)
just pass in false
for the resolve/reject value.
// This promise cannot be resolve successfully via an emitted event
// But it can be rejected via the default 'error' event
promisify(emitter, { resolve: false })
This library is dependent upon bluebird
, but because bluebird
is so common, there is no need to
install it multiple times so bluebird
is declared as a peerDependency
Note: bluebird
is also declared as a devDependency
for running the test suite
I welcome all pull requests. Please make sure you add appropriate test cases for any features added. Before opening a PR please make sure to run the following scripts:
npm run lint
checks for code errors and format according to ts-standardnpm test
make sure all tests passnpm run test-cover
make sure the coverage has not decreased from current master