Channel Question:
How do I suspend while waiting for a message from a channel that matches a predicate, in a repeatable way? When I use ReceiveChannel.first{} or ReceiveChannel.consumeAsFlow().first {} more than once, the second one throws an exception saying channel cancelled and no items in flow respectively.