Point of asynchrony that might be causing bugs.  For removing an item
from a list, we execute remove, which acquires a write lock on an
object and then immediately tries to remove an element from that object.

Importantly though if the acquisition of that write lock fails, we
still get passed the internal data of the object.  If these data are
different from what we anticipated (ie, does not have enough elements,
can get into a situation where ...)