# Await Event
|
|
A really stupid utility I use frequently for event emitters.
|
Allows you to `yield` an event and return the results.
|
I use this a lot of locking.
|
|
Note: you probably shouldn't use this for the `error` event.
|
|
## Example
|
|
```js
|
var PassThrough = require('stream').PassThrough
|
|
var stream = new PassThrough()
|
// you attach it directly on an event emitter
|
stream.await = require('await-event')
|
|
co(function* () {
|
var chunk = yield stream.await('data')
|
var chunk = yield stream.await('data')
|
var chunk = yield stream.await('data')
|
}).catch(noop)
|
|
stream.write('some chunk')
|
```
|
|
You can use awaitEvent without attach on an event emitter:
|
|
```js
|
var EventEmitter = require('event')
|
|
var emitter = new EventEmitter()
|
co(function*() {
|
yield awaitEvent(emitter, 'ready')
|
}).catch(noop)
|
```
|
|
When use this for `error` event, it will reject once `error` event emitted:
|
|
```js
|
var EventEmitter = require('event')
|
|
var emitter = new EventEmitter()
|
co(function*() {
|
// it will throw when `error` event emitted
|
yield awaitEvent(emitter, 'error')
|
}).catch(err => console.error(err.stack))
|
```
|