bg error isn't necessarily an Error

This commit is contained in:
tophf 2021-12-16 19:14:19 +03:00
parent b132fecbcd
commit d17036ed5b
2 changed files with 7 additions and 4 deletions

View File

@ -139,12 +139,13 @@
} }
function unwrapResponseFactory(name) { function unwrapResponseFactory(name) {
// Saving the local callstack before making an async call
return unwrapResponse.bind(null, new Error(`Callstack before invoking msg.${name}:`)); return unwrapResponse.bind(null, new Error(`Callstack before invoking msg.${name}:`));
} }
function unwrapResponse(localErr, {data, error} = {error: {message: ERR_NO_RECEIVER}}) { function unwrapResponse(localErr, {data, error} = {error: {message: ERR_NO_RECEIVER}}) {
return error return error
? Promise.reject(Object.assign(localErr, error, { ? Promise.reject(Object.assign(localErr, error, error.stack && {
stack: `${error.stack}\n${localErr.stack}`, stack: `${error.stack}\n${localErr.stack}`,
})) }))
: data; : data;
@ -164,6 +165,7 @@
if (!bg) { if (!bg) {
return msg.send(message); return msg.send(message);
} }
// Saving the local callstack before making an async call
const err = new Error(`Callstack before invoking API.${path.join('.')}:`); const err = new Error(`Callstack before invoking API.${path.join('.')}:`);
try { try {
return deepMerge(await bg.msg._execute(TARGETS.extension, message, { return deepMerge(await bg.msg._execute(TARGETS.extension, message, {
@ -171,9 +173,9 @@
tab: NEEDS_TAB_IN_SENDER.includes(path.join('.')) && await getOwnTab(), tab: NEEDS_TAB_IN_SENDER.includes(path.join('.')) && await getOwnTab(),
url: location.href, url: location.href,
})); }));
} catch (bgError) { } catch (bgErr) {
err.stack = `${bgError.stack}\n${err.stack}`; if (bgErr.stack) err.stack = `${bgErr.stack}\n${err.stack}`;
err.message = bgError.message; err.message = bgErr.message || `${bgErr}`;
// Not using `throw` to avoid pausing debugger when it's configured to pause on exceptions // Not using `throw` to avoid pausing debugger when it's configured to pause on exceptions
return Promise.reject(err); return Promise.reject(err);
} }

View File

@ -24,6 +24,7 @@
const promisify = function (fn, ...args) { const promisify = function (fn, ...args) {
let res; let res;
let resolve, reject; let resolve, reject;
// Saving the local callstack before making an async call
const err = new Error(); const err = new Error();
try { try {
args.push((...results) => { args.push((...results) => {