in hot-reload-core/src/main/kotlin/org/jetbrains/compose/reload/core/Bus.kt [34:50]
override suspend fun collect(action: suspend (T) -> Unit) {
val queue = Queue<T>()
dispatchQueues.update { it + queue }
try {
while (isActive()) {
val element = queue.receive()
action(element)
}
} catch (_: StopCollectingException) {
// stopping
} catch (t: Throwable) {
throw t
} finally {
dispatchQueues.update { it - queue }
}
}