Node's fetch wraps the underlying network error in `.cause`; the bare `err.message` is just "fetch failed" which tells us nothing about DNS vs connection refused vs network unreachable. Add formatErr() that walks .cause and includes its .code, plus the url being attempted, so logs distinguish between the actual failure modes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>