and make the return value of `cancel` return queue items. I don't think it's possible to make `cancel` not deadlock with an empty queue buffer without introducing a new Group primitive. This is the best I could come up with based on existing primitives. Let's see if applications find these APIs palatable.