runCatchingCancellable

inline fun <T> runCatchingCancellable(block: () -> T): Result<T>

Like runCatching, but rethrows CancellationException so structured concurrency is preserved.

Prefer this over runCatching for any block that may run in a cancellable coroutine context (including non-suspend helpers called from suspend code).

Non-CancellationException failures (including Error) become Result.failure, matching suspendRunCatchingCancellable.

For suspend blocks, use suspendRunCatchingCancellable (separate name avoids overload ambiguity).