suspendCoroutineUninterceptedOrReturn

Obtains the current continuation instance inside suspend functions and either suspends currently running coroutine or returns result immediately without suspension.

inline suspend fun <T> suspendCoroutineUninterceptedOrReturn(crossinline block: (Continuation<T>) -> Any?): T(source)
import kotlinx.coroutines.*
import kotlin.coroutines.intrinsics.*

suspend fun fetchValue(immediate: Boolean): Int =
    suspendCoroutineUninterceptedOrReturn { cont ->
        if (immediate) {
            // Return immediately without suspending
            42
        } else {
            // Suspend and resume later
            GlobalScope.launch {
                delay(1_000)
                cont.resume(84)
            }
            COROUTINE_SUSPENDED
        }
    }

fun main() = runBlocking {
    println("immediate: ${fetchValue(true)}")   // prints 42
    println("delayed:   ${fetchValue(false)}")  // prints 84 after 1 second
}

Source