I'm worried about this not causing the subsequent splices/updates to (asynchronously) block.  This could result in reordering.

Also, there no longer seems to be any place where we call _doneProcessingMessage.  This doesn't wedge things because _recv_batchSlice never returns false now, but in general this will potentially lead to further dangerous re-ordering of the splices.

The option that immediately comes to mind is that we stop processing the array of updates when this case happens, have _recv_batchSlice return false, and perhaps just push what's left of the remaining updates in their message back on the queue to process once we resume processing.

Slightly better would be to let the batch fully perform all the _transform_sliceSplice steps but defer all of the _fireSplice calls so that we can maximize pipelining of the mozContact lookups.  This seems like it could get complex/confusing, so it might be better to just leave that as a TODO potential enhancement type thing.