commit 79b1d440a6badab0b69de5166d7a0d7d0232d24b
parent 70126c608d61b9b40ba5d0cf34ac136b1f3e988f
Author: Julian Descottes <jdescottes@mozilla.com>
Date: Thu, 4 Dec 2025 09:41:13 +0000
Bug 1975401 - [devtools] Wrap all async-storage promise rejections in error objects with additional details r=devtools-reviewers,nchevobbe
This will have limited value, but it should make the reports about IDB transactions look less buggy. See https://bugzilla.mozilla.org/show_bug.cgi?id=1975401#c3 for more details.
Differential Revision: https://phabricator.services.mozilla.com/D274953
Diffstat:
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/devtools/shared/async-storage.js b/devtools/shared/async-storage.js
@@ -96,7 +96,11 @@ function getItem(itemKey) {
req = store.get(itemKey);
req.onerror = function getItemOnError() {
console.error("Error in asyncStorage.getItem():", req.error.name);
- reject(req.error);
+ reject(
+ new Error(
+ `async-storage failed to get item for key: ${itemKey}, error: ${req.error}`
+ )
+ );
};
},
reject
@@ -113,7 +117,11 @@ function setItem(itemKey, value) {
const req = store.put(value, itemKey);
req.onerror = function setItemOnError() {
console.error("Error in asyncStorage.setItem():", req.error.name);
- reject(req.error);
+ reject(
+ new Error(
+ `async-storage failed to set item for key: ${itemKey}, error: ${req.error}`
+ )
+ );
};
},
reject
@@ -130,7 +138,11 @@ function removeItem(itemKey) {
const req = store.delete(itemKey);
req.onerror = function removeItemOnError() {
console.error("Error in asyncStorage.removeItem():", req.error.name);
- reject(req.error);
+ reject(
+ new Error(
+ `async-storage failed to remove item for key: ${itemKey}, error: ${req.error}`
+ )
+ );
};
},
reject
@@ -147,7 +159,9 @@ function clear() {
const req = store.clear();
req.onerror = function clearOnError() {
console.error("Error in asyncStorage.clear():", req.error.name);
- reject(req.error);
+ reject(
+ new Error(`async-storage failed to clear, error: ${req.error}`)
+ );
};
},
reject
@@ -167,7 +181,11 @@ function length() {
req = store.count();
req.onerror = function lengthOnError() {
console.error("Error in asyncStorage.length():", req.error.name);
- reject(req.error.name);
+ reject(
+ new Error(
+ `async-storage failed to retrieve length, error: ${req.error}`
+ )
+ );
};
},
reject
@@ -210,7 +228,11 @@ function key(n) {
};
req.onerror = function keyOnError() {
console.error("Error in asyncStorage.key():", req.error.name);
- reject(req.error);
+ reject(
+ new Error(
+ `async-storage failed to retrieve key with n: ${n}, error: ${req.error}`
+ )
+ );
};
},
reject