Maciek
callbackFlow
awaitClose
fun CoroutineScope.onCancel(action: () -> Unit) { callbackFlow<Unit> { awaitClose(action) }.launchIn(this) }
Joffrey
Job
fun CoroutineScope.onCancel(action: () -> Unit) { coroutineContext.job.invokeOnCompletion { ex -> if (ex is CancellationException) { // do stuff } } }
invokeOnCompletion
coroutineContext.job
coroutineContext[Job]
Job?
A modern programming language that makes developers happier.