Maps a thrown throwable to the matching error — timeouts, TLS, network I/O, and cancellation are recognized; anything else becomes Unknown. kotlinx.coroutines.CancellationException should be rethrown by callers before reaching here, but is mapped to Cancelled defensively.