Another question I have about this, is why this needs to be such an explicit Queue. If schedule() simply added a setTimeout and saved the timeout-id, and cancel simply cleared it, would it still not be a Queue? After all, we only have a single running context.