efba782fa7
A stalled Jina reader request shared the overall reader-mode AbortSignal with the downstream trafilatura/lynx/native fallbacks. When Jina hung until the budget timer fired, the shared signal aborted and the catch handler's signal?.throwIfAborted() re-threw before any local fallback ran. - Bound Jina and Parallel extract to their own per-attempt sub-budget (REMOTE_READER_MAX_MS, capped at 10s) so a remote stall cannot consume the whole overall reader-mode budget. - Catch handlers now rethrow only on real userSignal cancellation, not on remote sub-budget or overall budget expiry. - Wrap trafilatura/lynx in their own try/catch so a subprocess failure or abort does not skip the in-process native renderer. - Always attempt the native renderer last: it works on already-loaded HTML with no network or subprocess, so even an exhausted overall budget still yields a result. Fixes #1449