web/workers/fetch: catch network-related errors & retry 3 times

previously all network issues showed a "worker crashed" error, which people misinterpreted all the time, and reasonably so
This commit is contained in:
wukko 2025-06-07 11:46:16 +06:00
parent 2f5304f479
commit 77e78d55fc
No known key found for this signature in database
GPG Key ID: 3E30B3F26C7B4AA2
2 changed files with 10 additions and 0 deletions

View File

@ -7,6 +7,7 @@
"fetch.no_file_reader": "couldn't write a file to cache",
"fetch.empty_tunnel": "file tunnel is empty, try again in a few minutes",
"fetch.corrupted_file": "file wasn't downloaded fully, try again",
"fetch.network_error": "downloading was interrupted by a network issue",
"ffmpeg.probe_failed": "couldn't probe this file, it may be unsupported or corrupted",
"ffmpeg.out_of_memory": "not enough available memory, can't continue",

View File

@ -1,5 +1,10 @@
import * as Storage from "$lib/storage";
const networkErrors = [
"TypeError: Failed to fetch",
"TypeError: network error",
];
let attempts = 0;
const fetchFile = async (url: string) => {
@ -83,6 +88,10 @@ const fetchFile = async (url: string) => {
}
});
} catch (e) {
// retry several times if the error is network-related
if (networkErrors.includes(String(e))) {
return error("queue.fetch.network_error");
}
console.error("error from the fetch worker:");
console.error(e);
return error("queue.fetch.crashed", false);