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); + }); } } }