// queue to the work list. Expired timers are moved to the work list is a non-deterministic order.
// ordering guarantees when mixing the mechanisms below. Specifically, it is unsafe to assume that
// calling post followed by deferredDelete will result in the post callback being invoked before the
// deferredDelete; deferredDelete will run first if there is a pending deferredDeletion at the time
// implemented as libevent timers with a deadline of 0. Both of these actions are moved to the work
// Events execute in the following order, derived from the order in which items were added to the