///|
/// start_worker starts an infinite loop that pops messages from the queue and passes them to a handler.
pub async fn[T] start_worker(
queue : RelayQueue[T],
handler : (Message[T]) -> Unit,
) -> Unit {
for ;; {
let msg = queue.pop() catch { _ => break }
handler(msg)
}
}