withTimeout

expect suspend fun <T> withTimeout(block: suspend CoroutineScope.() -> T): T
actual suspend fun <T> withTimeout(block: suspend CoroutineScope.() -> T): T

Execute block and cancel if doesn't complete in time. Unlike the regular kotlinx.coroutines withTimeout, this also checks for cancellation first and fails immediately.