onFailureExceptCancellation
Handles non-cancellation failures; rethrows CancellationException so the coroutine can cancel.
Prefer producing the Result with runCatchingCancellable so cancellation never enters the Result.