Skip to content

Commit 7f58251

Browse files
committed
fix: Make sure that falsy values are captured in unhandledrejections
1 parent 836b31f commit 7f58251

File tree

4 files changed

+264
-165
lines changed

4 files changed

+264
-165
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
## Unreleased
44

55
- [browser] feat: Use framesToPop for InvaliantViolations in React errors (#2204)
6+
- [browser] fix: Make sure that falsy values are captured in unhandledrejections (#2207)
7+
- [loader] fix: Loader should also retrigger falsy values as errors (#2207)
68

79
## 5.6.1
810

packages/browser/src/integrations/globalhandlers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export class GlobalHandlers implements Integration {
9494
message.error && isString(message.error.message) ? message.error.message : 'No error message';
9595
}
9696

97-
if (stacktrace.mechanism === 'onunhandledrejection' && stacktrace.incomplete) {
97+
if (stacktrace.mechanism === 'onunhandledrejection' && (stacktrace.incomplete || stacktrace.mode === 'failed')) {
9898
return this._eventFromIncompleteRejection(stacktrace, error);
9999
}
100100

@@ -166,8 +166,8 @@ export class GlobalHandlers implements Integration {
166166
if (event.exception.values && event.exception.values[0]) {
167167
event.exception.values[0].mechanism = {
168168
data: {
169-
incomplete: true,
170169
mode: stacktrace.mode,
170+
...(stacktrace.incomplete && { incomplete: stacktrace.incomplete }),
171171
...(stacktrace.message && { message: stacktrace.message }),
172172
...(stacktrace.name && { name: stacktrace.name }),
173173
},

packages/browser/src/tracekit.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,12 @@ TraceKit._report = (function reportModuleWrapper() {
272272
* @see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent
273273
*/
274274
function _traceKitWindowOnUnhandledRejection(e: any) {
275-
var err = e && typeof e.reason !== 'undefined' ? e.reason : e;
275+
var err = e;
276+
// You cannot itterate over non-objects, but we want to check
277+
// for the existence in any value, not for the value itself
278+
try {
279+
err = e && 'reason' in e ? e.reason : e;
280+
} catch (_oO) {}
276281
var stack = TraceKit._computeStackTrace(err);
277282
stack.mechanism = 'onunhandledrejection';
278283
_notifyHandlers(stack, true, err);
@@ -906,8 +911,8 @@ TraceKit._computeStackTrace = (function _computeStackTraceWrapper() {
906911

907912
return {
908913
original: ex,
909-
name: ex.name,
910-
message: ex.message,
914+
name: ex && ex.name,
915+
message: ex && ex.message,
911916
mode: 'failed',
912917
};
913918
}

0 commit comments

Comments
 (0)