asDeferred

Creates a view of this CompletableDeferred as a Deferred, which prevents downcasting to a completable version.

class MyClass(val scope: CoroutineScope) {
// can be completed
private val actualDeferred: CompletableDeferred<String> = CompletableDeferred()

// can not be completed from outside
public val operationCompleted: Deferred<String> = actualDeferred.asDeferred()

fun startOperation() = scope.launch {
// do some work
delay(2.seconds)
actualDeferred.complete("Done")
}
}

// (myClass.operationCompleted as CompletableDeferred<*>) will fail

Converts this promise value to the instance of Deferred.