Now we did this: ```suspend fun registerBroadcastR...
# coroutines
d
Now we did this:
Copy code
suspend fun registerBroadcastReceiver(context: Context, intentFilter: IntentFilter): ReceiveChannel<Intent> =
        suspendCancellableCoroutine { produce<Intent>(capacity = Channel.UNLIMITED) {
            var broadcastReceiver:BroadcastReceiver? = null
            try {
                broadcastReceiver = object : BroadcastReceiver() {
                    override fun onReceive(context: Context, intent: Intent) {
                        offer(intent)
                    }
                }.also { context.registerReceiver(it, intentFilter) }
            } catch(e: CancellationException) {
                context.unregisterReceiver(broadcastReceiver)
            }
        } }
But it seems from the logs that by the time it got to
offer
the channel was already closed...