therefore require dequeue to always leave the element it has dequeued on
the queue.
- In the fx queue, a progress sentinel is added when a queue element
is dequeued.
- The sentinel is ignored when dequeue is called explicitly
- When adding a new element to the fx queue, queue() checks if
the progress sentinel is present. If not, it calls dequeue()