Просмотр исходного кода

fix: error handling in Callback

tophf 1 месяц назад
Родитель
Сommit
a9d5762b8e
1 измененных файлов с 9 добавлено и 6 удалено
  1. 9 6
      src/injected/web/bridge.js

+ 9 - 6
src/injected/web/bridge.js

@@ -21,7 +21,7 @@ const bridge = {
       cb = resolve;
     });
     if (IS_FIREFOX) setPrototypeOf(res, SafePromiseConstructor);
-    postWithCallback(cmd, data, node, cb);
+    postWithCallback(cmd, data, node, cb, true);
     return res;
   },
   /** @return {?} synchronous */
@@ -29,15 +29,18 @@ const bridge = {
 };
 
 
-function postWithCallback(cmd, data, node, cb) {
-  let res;
+function postWithCallback(cmd, data, node, cb, isPromise) {
+  let res, err;
   const id = safeGetUniqId();
   callbacks[id] = [
-    cb || (val => { res = val; }),
-    !cb && new SafeError().stack,
+    cb || ((a, b) => { res = a; err = b; }),
+    !isPromise && new SafeError().stack, // Promise already tracks the caller
   ];
   bridge.post(cmd, { [CALLBACK_ID]: id, data }, node);
-  if (!cb) return res;
+  if (!cb) {
+    if (err) throw err;
+    return res;
+  }
 }
 
 export default bridge;