diff --git a/src/vs/workbench/api/common/extensionHostMain.ts b/src/vs/workbench/api/common/extensionHostMain.ts index e07d63c5c7c..f99e28f37ed 100644 --- a/src/vs/workbench/api/common/extensionHostMain.ts +++ b/src/vs/workbench/api/common/extensionHostMain.ts @@ -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 }); }, });