@lpezet/p-retry-ts
Version:
Retry a promise-returning or async function
30 lines (29 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// Source: https://github.com/yzqzy/p-retry-cjs/blob/c3a5f45508e2e50190e1b43294620232a34228ac/src/isNetworkError.ts
const objectToString = Object.prototype.toString;
const isError = (value) => objectToString.call(value) === "[object Error]";
const errorMessages = new Set([
"Failed to fetch", // Chrome
"NetworkError when attempting to fetch resource.", // Firefox
"The Internet connection appears to be offline.", // Safari 16
"Load failed", // Safari 17+
"Network request failed", // `cross-fetch`
"fetch failed", // Undici (Node.js)
]);
function isNetworkError(error) {
const isValid = error &&
isError(error) &&
error.name === "TypeError" &&
typeof error.message === "string";
if (!isValid) {
return false;
}
// We do an extra check for Safari 17+ as it has a very generic error message.
// Network errors in Safari have no stack.
if (error.message === "Load failed") {
return error.stack === undefined;
}
return errorMessages.has(error.message);
}
exports.default = isNetworkError;