diff --git a/client.ts b/client.ts index 34d00ac..2715990 100644 --- a/client.ts +++ b/client.ts @@ -4,7 +4,7 @@ import { load_gallery_page } from "./page/GalleryPage.ts"; import { load_home_overview_page } from "./page/HomeOverviewPage.ts"; import { load_mpv_page } from "./page/MPVPage.ts"; import { load_single_page } from "./page/SinglePage.ts"; -import { RecoverableError } from "./task_manager.ts"; +import { RecoverableError, TimeoutError } from "./utils.ts"; export type GID = [number, string]; @@ -118,8 +118,10 @@ export class Client { } return re; } catch (e) { - if (e instanceof TypeError) { - throw new RecoverableError(e.message, { cause: e.cause }); + if (e instanceof DOMException) { + if (e.name == "AbortError") { + throw new TimeoutError(); + } } throw e; } finally { diff --git a/task_manager.ts b/task_manager.ts index f69a160..6a7c239 100644 --- a/task_manager.ts +++ b/task_manager.ts @@ -21,14 +21,13 @@ import { DiscriminatedUnion, promiseState, PromiseStatus, + RecoverableError, sleep, } from "./utils.ts"; export class AlreadyClosedError extends Error { } -export class RecoverableError extends Error {} - type EventMap = { current_cfg_updated: ConfigType; new_task: Task; diff --git a/tasks/download.ts b/tasks/download.ts index 5a835ff..c75cd50 100644 --- a/tasks/download.ts +++ b/tasks/download.ts @@ -8,7 +8,8 @@ import { TaskDownloadSingleProgress, TaskType, } from "../task.ts"; -import { RecoverableError, TaskManager } from "../task_manager.ts"; +import { TaskManager } from "../task_manager.ts"; +import { RecoverableError } from "../utils.ts"; import { add_suffix_to_path, asyncEvery, diff --git a/utils.ts b/utils.ts index 5f7509d..55fac67 100644 --- a/utils.ts +++ b/utils.ts @@ -265,7 +265,9 @@ export function map( return re; } -export class TimeoutError extends Error { +export class RecoverableError extends Error {} + +export class TimeoutError extends RecoverableError { constructor() { super("Timeout"); }