Problem was due to an internal private class of NonblockingBatch holding a weak ref to its owner. Now holds a strong ref when scheduled and drops it when the operation is completed, to prevent a reference cycle.