suspendRunCatching

inline fun <R> suspendRunCatching(block: () -> R): Result<R>(source)

Like runCatching, but rethrows CancellationException to preserve structured concurrency.

Plain runCatching catches all Throwable including CancellationException, which silently breaks coroutine cancellation. Use this in suspend functions that return Result.