override suspend fun collect()

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 }
        }
    }