From f6535a82b6a245c587568480926ef97fd99c0c26 Mon Sep 17 00:00:00 2001 From: Philip Fulcher Date: Fri, 14 Oct 2022 14:32:03 -0600 Subject: [PATCH] fix(core): catch rejected promises in convertNxExecutor --- .../devkit/src/utils/convert-nx-executor.ts | 60 ++++++++++--------- .../executors/utils/convert-nx-executor.ts | 60 ++++++++++--------- 2 files changed, 64 insertions(+), 56 deletions(-) diff --git a/packages/devkit/src/utils/convert-nx-executor.ts b/packages/devkit/src/utils/convert-nx-executor.ts index 0bf6636d179d1..031d8786b3e20 100644 --- a/packages/devkit/src/utils/convert-nx-executor.ts +++ b/packages/devkit/src/utils/convert-nx-executor.ts @@ -48,39 +48,43 @@ function toObservable( ): Observable { return new (require('rxjs') as typeof import('rxjs')).Observable( (subscriber) => { - promiseOrAsyncIterator.then((value) => { - if (!(value as any).next) { - subscriber.next(value as T); - subscriber.complete(); - } else { - let asyncIterator = value as AsyncIterableIterator; + promiseOrAsyncIterator + .then((value) => { + if (!(value as any).next) { + subscriber.next(value as T); + subscriber.complete(); + } else { + let asyncIterator = value as AsyncIterableIterator; - function recurse(iterator: AsyncIterableIterator) { - iterator - .next() - .then((result) => { - if (!result.done) { - subscriber.next(result.value); - recurse(iterator); - } else { - if (result.value) { + function recurse(iterator: AsyncIterableIterator) { + iterator + .next() + .then((result) => { + if (!result.done) { subscriber.next(result.value); + recurse(iterator); + } else { + if (result.value) { + subscriber.next(result.value); + } + subscriber.complete(); } - subscriber.complete(); - } - }) - .catch((e) => { - subscriber.error(e); - }); - } + }) + .catch((e) => { + subscriber.error(e); + }); + } - recurse(asyncIterator); + recurse(asyncIterator); - return () => { - asyncIterator.return(); - }; - } - }); + return () => { + asyncIterator.return(); + }; + } + }) + .catch((err) => { + subscriber.error(err); + }); } ); } diff --git a/packages/nx/src/executors/utils/convert-nx-executor.ts b/packages/nx/src/executors/utils/convert-nx-executor.ts index 32beebc958672..d40dadb8eb032 100644 --- a/packages/nx/src/executors/utils/convert-nx-executor.ts +++ b/packages/nx/src/executors/utils/convert-nx-executor.ts @@ -51,39 +51,43 @@ function toObservable( ): Observable { return new (require('rxjs') as typeof import('rxjs')).Observable( (subscriber) => { - promiseOrAsyncIterator.then((value) => { - if (!(value as any).next) { - subscriber.next(value as T); - subscriber.complete(); - } else { - let asyncIterator = value as AsyncIterableIterator; + promiseOrAsyncIterator + .then((value) => { + if (!(value as any).next) { + subscriber.next(value as T); + subscriber.complete(); + } else { + let asyncIterator = value as AsyncIterableIterator; - function recurse(iterator: AsyncIterableIterator) { - iterator - .next() - .then((result) => { - if (!result.done) { - subscriber.next(result.value); - recurse(iterator); - } else { - if (result.value) { + function recurse(iterator: AsyncIterableIterator) { + iterator + .next() + .then((result) => { + if (!result.done) { subscriber.next(result.value); + recurse(iterator); + } else { + if (result.value) { + subscriber.next(result.value); + } + subscriber.complete(); } - subscriber.complete(); - } - }) - .catch((e) => { - subscriber.error(e); - }); - } + }) + .catch((e) => { + subscriber.error(e); + }); + } - recurse(asyncIterator); + recurse(asyncIterator); - return () => { - asyncIterator.return(); - }; - } - }); + return () => { + asyncIterator.return(); + }; + } + }) + .catch((err) => { + subscriber.error(err); + }); } ); }