in hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/WorkerThreadDispatcher.kt [20:38]
override fun <T> interceptContinuation(continuation: Continuation<T>): Continuation<T> {
return Continuation(continuation.context) { result ->
/* Fast path: We can invoke immediately */
if (Thread.currentThread() == workerThread && isImmediate) {
continuation.resumeWith(result)
return@Continuation
}
/* We dispatch to the worker thread */
val future = workerThread.invoke {
continuation.resumeWith(result)
}
val exception = future.getOrNull()?.exceptionOrNull()
if (exception is RejectedExecutionException) {
continuation.resumeWithException(exception)
}
}
}