diff --git a/packages/utils/src/executeSafePromise.ts b/packages/utils/src/executeSafePromise.ts index 7ba147479f..4bbe18f539 100644 --- a/packages/utils/src/executeSafePromise.ts +++ b/packages/utils/src/executeSafePromise.ts @@ -3,7 +3,8 @@ import { Logger } from './Logger' const logger = new Logger(module) /** - * Execute a promise that should never reject. If it does, log the error and exit the process. + * Execute a promise that should never reject. If it does, log the error and exit the process + * (in Node/Electron) or throw an unhandled error (in browsers). * To be used in places where we want to "annotate" that the intention of a promise is never * to reject (unless something is really wrong). */ @@ -12,11 +13,13 @@ export const executeSafePromise = async (createPromise: () => Promise): Pr return await createPromise() } catch (err: any) { logger.fatal('Assertion failure!', { message: err?.message, err }) - if (process.exit !== undefined) { + + // Check if we're in a Node/Electron environment + if (typeof process !== 'undefined' && process.exit !== undefined) { process.exit(1) } else { - // cause an unhandled promise rejection on purpose - throw new Error('executeSafePromise: Assertion failure!', err) + // Browser environment - throw with proper error chaining + throw new Error('executeSafePromise: Assertion failure!', { cause: err }) } } }