Add lint rule for unhandled promise rejections

This commit is contained in:
Zaid Abdulla committed 2020-09-08 17:33:48 -07:00
1 parent ad682d0b69
commit 0b60406b43
14 files changed
+177 -117

No files matched your search

+45 -13
View File
@@ -152,6 +152,8 @@ function checkConnection(): void {
}
}
},
}).catch((err) => {
notifications.push("error", err.message);
});
}
@@ -169,11 +171,25 @@ export async function xhrRequest(
): any => {
if (typeof extract === "function") return extract(xhr, _options);
// https://mithril.js.org/request.html#error-handling
if (xhr.status !== 304 && Math.floor(xhr.status / 100) !== 2) {
const err = new Error();
err["message"] =
xhr.status === 0
? "Server is unrachable"
: `Unexpected response status code ${xhr.status}`;
err["code"] = xhr.status;
err["response"] = xhr.responseText;
throw err;
}
let response: any;
if (typeof deserialize === "function") {
response = deserialize(xhr.responseText);
} else if (
xhr.getResponseHeader("content-type").startsWith("application/json")
(xhr.getResponseHeader("content-type") || "").startsWith(
"application/json"
)
) {
try {
response = xhr.responseText ? JSON.parse(xhr.responseText) : null;
@@ -184,15 +200,6 @@ export async function xhrRequest(
response = xhr.responseText;
}
// https://mithril.js.org/request.html#error-handling
if (xhr.status !== 304 && Math.floor(xhr.status / 100) !== 2) {
const err = new Error();
err["message"] = xhr.responseText;
err["code"] = xhr.status;
err["response"] = response;
throw err;
}
return response;
};
@@ -340,7 +347,7 @@ export function fetch(
return queryResponse;
}
export function fulfill(
function _fulfill(
accessTimestamp: number,
_fulfillTimestamp: number
): Promise<boolean> {
@@ -377,7 +384,16 @@ export function fulfill(
m.buildQueryString({
filter: memoizedStringify(filter),
}),
extract: (xhr) => +xhr.getResponseHeader("x-total-count"),
extract: (xhr) => {
if (!xhr.status) {
throw new Error("Server is unrachable");
} else if (xhr.status !== 200) {
throw new Error(
`Unexpected response status code ${xhr.status}`
);
}
return +xhr.getResponseHeader("x-total-count");
},
background: true,
})
.then((c) => {
@@ -560,6 +576,17 @@ export function fulfill(
});
}
export function fulfill(
accessTimestamp: number,
_fulfillTimestamp: number,
callback?: (updated: boolean) => void
): void {
_fulfill(accessTimestamp, _fulfillTimestamp).then(callback, (err) => {
notifications.push("error", err.message);
if (callback) callback(false);
});
}
export function getTimestamp(): number {
return fulfillTimestamp;
}
@@ -647,7 +674,12 @@ export function resourceExists(resource: string, id: string): Promise<number> {
m.buildQueryString({
filter: memoizedStringify(filter),
}),
extract: (xhr) => +xhr.getResponseHeader("x-total-count"),
extract: (xhr) => {
if (!xhr.status) throw new Error("Server is unrachable");
else if (xhr.status !== 200)
throw new Error(`Unexpected response status code ${xhr.status}`);
return +xhr.getResponseHeader("x-total-count");
},
background: true,
});
}