From c0931bf4699d8486e3f540c1a6412fea984a6488 Mon Sep 17 00:00:00 2001 From: mrmlnc Date: Sat, 15 Aug 2020 17:32:55 +0300 Subject: [PATCH] fix(fs.walk): do not emit events after destroy --- packages/fs/fs.walk/src/readers/async.spec.ts | 6 +++--- packages/fs/fs.walk/src/readers/async.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/fs/fs.walk/src/readers/async.spec.ts b/packages/fs/fs.walk/src/readers/async.spec.ts index 0c2b0bca..c576aa4d 100644 --- a/packages/fs/fs.walk/src/readers/async.spec.ts +++ b/packages/fs/fs.walk/src/readers/async.spec.ts @@ -53,15 +53,15 @@ describe('Readers → Async', () => { reader.read(); }); - it('should do not emit "entry" event after first broken scandir call', (done) => { + it('should do not emit events after first broken scandir call', (done) => { const reader = new TestReader('directory'); const firstFakeDirectoryEntry = tests.buildFakeDirectoryEntry({ name: 'a', path: 'directory/a' }); const secondFakeDirectoryEntry = tests.buildFakeDirectoryEntry({ name: 'b', path: 'directory/b' }); reader.scandir.onFirstCall().yields(null, [firstFakeDirectoryEntry, secondFakeDirectoryEntry]); - reader.scandir.onSecondCall().yields(tests.EPERM_ERRNO); - reader.scandir.onThirdCall().yields(tests.EPERM_ERRNO); + reader.scandir.onSecondCall().yieldsAsync(tests.EPERM_ERRNO); + reader.scandir.onThirdCall().yieldsAsync(tests.EPERM_ERRNO); /** * If the behavior is broken, then a third scandir call will trigger an unhandled error. diff --git a/packages/fs/fs.walk/src/readers/async.ts b/packages/fs/fs.walk/src/readers/async.ts index 9968d635..4393df17 100644 --- a/packages/fs/fs.walk/src/readers/async.ts +++ b/packages/fs/fs.walk/src/readers/async.ts @@ -87,7 +87,7 @@ export default class AsyncReader extends Reader { } private _handleError(error: Error): void { - if (!common.isFatalError(this._settings, error)) { + if (this._isDestroyed || !common.isFatalError(this._settings, error)) { return; }