From b10d73c3ce4cb1414f2c71bbb4d35e7ba6f2ebac Mon Sep 17 00:00:00 2001 From: vilicvane Date: Mon, 26 Sep 2016 22:47:49 +0800 Subject: [PATCH] Fix #3, listen "close" event only for stream No longer listen "finish" or "end" event for writable or readable stream --- src/awaitable.ts | 11 +++++------ src/test/awaitable/awaitable-test.ts | 8 ++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/awaitable.ts b/src/awaitable.ts index 4718884..bfd1e66 100644 --- a/src/awaitable.ts +++ b/src/awaitable.ts @@ -36,13 +36,12 @@ function getEventEmitterAwaitableOptions(emitter: EventEmitter): EventEmitterAwa } } }; - } else if (ReadableConstructor && emitter instanceof ReadableConstructor) { - return { - types: ['end', 'close'] - }; - } else if (WritableConstructor && emitter instanceof WritableConstructor) { + } else if ( + ReadableConstructor && emitter instanceof ReadableConstructor || + WritableConstructor && emitter instanceof WritableConstructor + ) { return { - types: ['finish', 'close'] + types: ['close'] }; } else { throw new Error('Missing event types'); diff --git a/src/test/awaitable/awaitable-test.ts b/src/test/awaitable/awaitable-test.ts index a1dfc2c..5b09313 100644 --- a/src/test/awaitable/awaitable-test.ts +++ b/src/test/awaitable/awaitable-test.ts @@ -145,20 +145,20 @@ describe('Feature: awaitable', () => { }); context('From `Stream`', () => { - it('Should fulfill on "end" event of readable stream', async () => { + it('Should fulfill on "close" event of readable stream', async () => { let stream = new Readable(); let ret = awaitable(stream); - setImmediate(() => stream.emit('end')); + setImmediate(() => stream.emit('close')); expect(await ret).to.be.undefined; }); - it('Should fulfill on "finish" event of writable stream', async () => { + it('Should fulfill on "close" event of writable stream', async () => { let stream = new Writable(); let ret = awaitable(stream); - setImmediate(() => stream.emit('finish')); + setImmediate(() => stream.emit('close')); expect(await ret).to.be.undefined; });