Various refactorings related to resource management and timeouts
* `Job.Registration` is renamed to `DisposableHandle`
* `EmptyRegistration` is renamed to `NonDisposableHandle`
* `Job.unregisterOnCompletion` is renamed to `Job.disposeOnCompletion`
* `Delay.invokeOnTimeout` is introduced
* `withTimeout` uses `Delay.invokeOnTimeout` when available
diff --git a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
index 91dad91..2e69343 100644
--- a/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
+++ b/kotlinx-coroutines-core/src/main/kotlin/kotlinx/coroutines/experimental/Deferred.kt
@@ -155,7 +155,7 @@
@Suppress("UNCHECKED_CAST")
private suspend fun awaitSuspend(): T = suspendCancellableCoroutine { cont ->
- cont.unregisterOnCompletion(invokeOnCompletion {
+ cont.disposeOnCompletion(invokeOnCompletion {
val state = this.state
check(state !is Incomplete)
if (state is CompletedExceptionally)
@@ -183,7 +183,7 @@
}
if (startInternal(state) == 0) {
// slow-path -- register waiter for completion
- select.unregisterOnCompletion(invokeOnCompletion(SelectAwaitOnCompletion(this, select, block)))
+ select.disposeOnSelect(invokeOnCompletion(SelectAwaitOnCompletion(this, select, block)))
return
}
}