Jag är fortfarande inte säker på vad som orsakar pausen, men det verkar vara den som är boven.
Under pausen, Cursor.nextObject blir uppringd flera gånger innan den första kommer tillbaka. Vissa av dessa samtal returnerar null . Lösningen är att se till att Cursor.nextObject kallas aldrig samtidigt.
if (this.cursor && !this.cursor_exec && this.length() < this.concurrency) {
this.cursor_exec = true;
this.cursor.nextObject(function(err, item) {
console.log(this.name + ': ' + (item ? item._id : null) + ' ' + (err ? err : null));
this.cursor_exec = false;
if (item) {
this.push(item);
} else {
delete this.cursor;
}
}.bind(this));
}