Handle timeouts as temporary errors

This commit is contained in:
Samuel Elliott
2022-11-27 16:19:56 +00:00
parent 3821a26038
commit 055fe2dff4
3 changed files with 22 additions and 5 deletions

View File

@@ -1,4 +1,6 @@
export const TemporaryErrorSymbol = Symbol('TemporaryError');
export function getTitleIdFromEcUrl(url: string) {
const match = url.match(/^https:\/\/ec\.nintendo\.com\/apps\/([0-9a-f]{16})\//);
return match?.[1] ?? null;
@@ -31,7 +33,9 @@ export function timeoutSignal(ms = 60 * 1000) {
const controller = new AbortController();
const timeout = setTimeout(() => {
controller.abort(new Error('Timeout'));
const err = new Error('Timeout');
Object.assign(err, TemporaryErrorSymbol, true);
controller.abort(err);
}, ms);
return [controller.signal, () => clearTimeout(timeout), controller] as const;