From bdade0f0d5bbe2fdbce0b697741a748a16f6137c Mon Sep 17 00:00:00 2001 From: Dimitris-Rafail Katsampas Date: Wed, 28 Sep 2022 02:57:11 +0300 Subject: [PATCH] fix(core): errors get swallowed if thrown inside async event functions (#10030) --- packages/core/data/observable/index.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/core/data/observable/index.ts b/packages/core/data/observable/index.ts index b11532ebc..f27f9d08e 100644 --- a/packages/core/data/observable/index.ts +++ b/packages/core/data/observable/index.ts @@ -294,10 +294,19 @@ export class Observable implements ObservableDefinition { if (entry.once) { observers.splice(i, 1); } + + let returnValue; if (entry.thisArg) { - entry.callback.apply(entry.thisArg, [data]); + returnValue = entry.callback.apply(entry.thisArg, [data]); } else { - entry.callback(data); + returnValue = entry.callback(data); + } + + // This ensures errors thrown inside asynchronous functions do not get swallowed + if (returnValue && returnValue instanceof Promise) { + returnValue.catch((err) => { + console.error(err); + }); } } }