From c23ffa382d862ced1a385cf36d895f75ad3b7e97 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:27:56 +0000 Subject: [PATCH] fix(fetcher): never block flaresolverr timeouts --- src/utils/Fetcher.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/utils/Fetcher.ts b/src/utils/Fetcher.ts index 7472bb2..c23aff2 100644 --- a/src/utils/Fetcher.ts +++ b/src/utils/Fetcher.ts @@ -159,7 +159,7 @@ export class Fetcher { } const timeouts = (await this.timeoutsCountCache.get(url.host)) ?? 0; - if (timeouts >= (requestConfig?.timeoutsCountThrow ?? this.DEFAULT_TIMEOUTS_COUNT_THROW)) { + if (!this.isFlareSolverrUrl(url) && timeouts >= (requestConfig?.timeoutsCountThrow ?? this.DEFAULT_TIMEOUTS_COUNT_THROW)) { throw new TooManyTimeoutsError(url); } @@ -357,13 +357,18 @@ export class Fetcher { return new Promise(sleep => setTimeout(sleep, ms)); } + private isFlareSolverrUrl(url: URL): boolean { + const flareSolverrEndpoint = envGet('FLARESOLVERR_ENDPOINT'); + + return !!flareSolverrEndpoint && url.href.startsWith(flareSolverrEndpoint); + } + private getProxyForUrl(ctx: Context, url: URL): URL | undefined { if (ctx.config.mediaFlowProxyUrl && url.href.includes(ctx.config.mediaFlowProxyUrl)) { return undefined; } - const flareSolverrEndpoint = envGet('FLARESOLVERR_ENDPOINT'); - if (flareSolverrEndpoint && url.href.startsWith(flareSolverrEndpoint)) { + if (this.isFlareSolverrUrl(url)) { return undefined; }