Why might the main process wait indefinitely when a background worker thread fails? Reth PR
#28313 explains: if a proof task panics without emitting a result, and the coordinator still holds the sender, the channel won't close on its own, so waiters receive no clear completion signal. The solution converts each task panic into ProofJobError::Panicked and sends a single result through a unified exit path, allowing the worker thread to continue serving requests. Scope note: panics that occur before the thread claims a task or while opening the provider are not covered by this change. For node
$ETH or services that depend on its results, error responses need a complete path just like successful responses.