Dequeue
Tag 3: the client names a key and withdraws every message waiting for the agent under it; the server answers with exactly one channel response stating whether any was, and answers each withdrawn message on its own enqueue channel.
The client opens this channel to withdraw every message waiting for the agent under a key — the key an enqueue carried: those the server holds under it, and those the loop in flight holds under it and has not taken. A message under another key stays where it is, and a message the loop has taken stays taken.