Node's fetch returns a generic "fetch failed" error, hiding the actual reason (e.g., ECONNRESET, timeout) in the error's cause chain. This change extracts up to three levels of the cause, formats each with its code and message, and includes the chain in the warning log, making failures more actionable.