backport: handle async stacktraces correctly (#2768)

This commit is contained in:
Kyra
2018-08-21 10:31:32 +02:00
committed by SpaceEEC
parent f5b3dff7f5
commit dc8cf08de9

View File

@@ -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);
},
});
});
}