From dc8cf08de986b3c49ed08db7358c8199cca6c2db Mon Sep 17 00:00:00 2001 From: Kyra Date: Tue, 21 Aug 2018 10:31:32 +0200 Subject: [PATCH] backport: handle async stacktraces correctly (#2768) --- src/client/rest/RESTManager.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/client/rest/RESTManager.js b/src/client/rest/RESTManager.js index dd0e7bb82..8acc708c6 100644 --- a/src/client/rest/RESTManager.js +++ b/src/client/rest/RESTManager.js @@ -23,11 +23,25 @@ class RESTManager { } push(handler, apiRequest) { + // Preserve async stack + let stackTrace = null; + if (Error.captureStackTrace) { + stackTrace = {}; + Error.captureStackTrace(stackTrace, this.makeRequest); + } + return new Promise((resolve, reject) => { handler.push({ request: apiRequest, resolve, - reject, + reject: error => { + if (stackTrace && (error instanceof Error)) { + stackTrace.name = error.name; + stackTrace.message = error.message; + error.stack = stackTrace.stack; + } + reject(error); + }, }); }); }