On backout, we raise an exception.  If this exception goes uncaught
all the way back to the service thread that started the associated
service, then we kill off one of our workers.  If we keep encountering
backouts, we'll eventually run out of workers.
We can add and remove events to waiting on commit lock from multiple
threads in event parent.  It appears that this can desynchronize
operations on endpoints_waiting_on_commit.  For instance, if one
thread puts in that it's waiting on a particular endpoint and another
thread puts in that the other endpoint's first phase transition has
been received, we can get a case where the first message overwrites
the operations of the second.
For unknown reasons, network_exception_nested_sequence test hangs
consistently.  For the time being, not fixing it.  Instead, filing an
issue on github, and will hopefully get to it.