Don’t re-wrap prepareStackTrace when assigned to itself

This commit is contained in:
Jordan Pittman
2023-06-12 13:55:18 -04:00
parent c9c3321afc
commit c2a85cbcc0
@@ -85,17 +85,26 @@ abstract class ErrorHandler {
return `${error.name || 'Error'}: ${error.message || ''}${stackTraceMessage}`;
}
let _wasWrapped = Symbol('prepareStackTrace wrapped');
let _prepareStackTrace = prepareStackTraceAndFindExtension;
Object.assign(_prepareStackTrace, { [_wasWrapped]: true });
Object.defineProperty(Error, 'prepareStackTrace', {
configurable: false,
get() {
return _prepareStackTrace;
},
set(v) {
if (v && (v as any)[_wasWrapped]) {
_prepareStackTrace = v;
return
}
_prepareStackTrace = function (error, stackTrace) {
prepareStackTraceAndFindExtension(error, stackTrace);
return v.call(Error, error, stackTrace);
};
Object.assign(_prepareStackTrace, { [_wasWrapped]: true });
},
});