A suspend function can be called from another suspend context and still return an ordinary value.

Suspend Function Shape

SuspendFunctionShape.kt
import kotlin.coroutines.Continuation
import kotlin.coroutines.EmptyCoroutineContext
import kotlin.coroutines.startCoroutine

suspend fun loadLabel(id: Int): String {
    val normalized = id.coerceAtLeast(0)
    return "item-$normalized"
}

fun main() {
    val id = 
    var output = "pending"

    val job: suspend () -> String = {
        loadLabel(id)
    }

    job.startCoroutine(object : Continuation<String> {
        override val context = EmptyCoroutineContext

        override fun resumeWith(result: Result<String>) {
            output = result.getOrThrow()
        }
    })

    println("result=$output")
}
import kotlin.coroutines.Continuation
import kotlin.coroutines.EmptyCoroutineContext
import kotlin.coroutines.startCoroutine

suspend fun loadLabel(id: Int): String {
    val normalized = id.coerceAtLeast(0)
    return "item-$normalized"
}

fun main() {
    val id = 
    var output = "pending"

    val job: suspend () -> String = {
        loadLabel(id)
    }

    job.startCoroutine(object : Continuation<String> {
        override val context = EmptyCoroutineContext

        override fun resumeWith(result: Result<String>) {
            output = result.getOrThrow()
        }
    })

    println("result=$output")
}
import kotlin.coroutines.Continuation
import kotlin.coroutines.EmptyCoroutineContext
import kotlin.coroutines.startCoroutine

suspend fun loadLabel(id: Int): String {
    val normalized = id.coerceAtLeast(0)
    return "item-$normalized"
}

fun main() {
    val id = 
    var output = "pending"

    val job: suspend () -> String = {
        loadLabel(id)
    }

    job.startCoroutine(object : Continuation<String> {
        override val context = EmptyCoroutineContext

        override fun resumeWith(result: Result<String>) {
            output = result.getOrThrow()
        }
    })

    println("result=$output")
}
suspend function A suspend function marks work that can cooperate with a coroutine context, even when this tiny example completes immediately.