From 729e04e17581a7a5a641b586497017485e9afc1e Mon Sep 17 00:00:00 2001 From: James Diacono Date: Wed, 11 Sep 2019 11:07:22 +1000 Subject: [PATCH 1/2] fix(core): ensure thrown errors contain stacktraces --- core/native-bridge.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/native-bridge.js b/core/native-bridge.js index cb374f4c4..13b1ae888 100644 --- a/core/native-bridge.js +++ b/core/native-bridge.js @@ -217,6 +217,11 @@ if (storedCall) { // looks like we've got a stored call + if (result.error) { + // ensure stacktraces + result.error = Object.assign(new Error(), result.error); + } + if (typeof storedCall.callback === 'function') { // callback if (result.success) { From 6bfd3ee3914ebe9ac0c8786eb6586b8e73c4a7bc Mon Sep 17 00:00:00 2001 From: James Diacono Date: Wed, 11 Sep 2019 11:41:53 +1000 Subject: [PATCH 2/2] fix(core): replace Object.assign with backward compatible alternative --- core/native-bridge.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/native-bridge.js b/core/native-bridge.js index 13b1ae888..385c96afc 100644 --- a/core/native-bridge.js +++ b/core/native-bridge.js @@ -217,9 +217,12 @@ if (storedCall) { // looks like we've got a stored call - if (result.error) { - // ensure stacktraces - result.error = Object.assign(new Error(), result.error); + if (result.error && typeof result.error === 'object') { + // ensure stacktraces by copying error properties to an Error + result.error = Object.keys(result.error).reduce(function(err, key) { + err[key] = result.error[key]; + return err; + }, new Error()); } if (typeof storedCall.callback === 'function') {