From 38cd27ea7987a1267477a2dffe8e128b32b65caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20R=C3=A4ntil=C3=A4?= Date: Sun, 30 Jun 2019 18:25:16 +0200 Subject: [PATCH] fix(core): Handles promise construction bodies which throw exceptions --- register.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/register.js b/register.js index 1b7c70e..2b60dea 100644 --- a/register.js +++ b/register.js @@ -66,19 +66,36 @@ process.on( "unhandledRejection", ( reason, promise ) => ); } ); +const state = { resolve: null, reject: null }; + class TraceablePromise extends Promise { constructor( executor ) { super( wrappedExecutor ); - function wrappedExecutor( ...args ) + function wrappedExecutor( resolve, reject ) { - return executor( ...args ); + state.resolve = resolve; + state.reject = reject; } + const resolve = state.resolve; + const reject = state.reject; + state.resolve = null; + state.reject = null; + const err = new Error( "Non-failing tracing error" ); this.__tracedError = err; + + try + { + executor( resolve, reject ); + } + catch ( err ) + { + reject( err ); + } } }