Improvements

when pushing documents, if processingCount reach 0, send the `drain` event

Then, at the beginning of waitAdding, check:

* if waitAdding == 0, we're good to go =>return cb().
* If waitAdding > 0, add a listener for the `drain` event and call cb() when you receive it