Wait for async events to resolve before returning

This commit is contained in:
Brandon Keepers 2017-06-30 12:34:23 -05:00
parent 98f12419e6
commit b4d946f92b
No known key found for this signature in database
GPG Key ID: F9533396D5FACBF6
4 changed files with 29 additions and 4 deletions

View File

@ -1,4 +1,4 @@
const {EventEmitter} = require('events');
const {EventEmitter} = require('promise-events');
const GitHubApi = require('github');
const Bottleneck = require('bottleneck');
const Context = require('./context');
@ -16,9 +16,9 @@ class Robot {
this.log = wrapLogger(logger);
}
receive(event) {
this.events.emit('*', event);
this.events.emit(event.event, event);
async receive(event) {
await this.events.emit('*', event);
await this.events.emit(event.event, event);
}
/**

5
package-lock.json generated
View File

@ -2219,6 +2219,11 @@
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
"dev": true
},
"promise-events": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/promise-events/-/promise-events-0.1.3.tgz",
"integrity": "sha1-VyzKwrr4Joueup8zf1a+PIGB8n0="
},
"proto-props": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/proto-props/-/proto-props-0.2.1.tgz",

View File

@ -27,6 +27,7 @@
"github-webhook-handler": "^0.6.0",
"load-plugins": "^2.1.2",
"pkg-conf": "^2.0.0",
"promise-events": "^0.1.3",
"raven": "^2.1.0",
"resolve": "^1.3.2",
"semver": "^5.3.0"

View File

@ -72,6 +72,25 @@ describe('Robot', function () {
});
});
describe('receive', () => {
it('waits for async events to resolve', async () => {
const spy = expect.createSpy();
robot.on('test', () => {
return new Promise(resolve => {
setTimeout(() => {
spy();
resolve();
}, 1);
})
});
await robot.receive(event);
expect(spy).toHaveBeenCalled();
});
});
describe('error handling', () => {
it('logs errors throw from handlers', async () => {
const error = new Error('testing');