Todavía no estoy seguro de qué está causando la pausa, pero parece que ese es el culpable.
Durante la pausa, Cursor.nextObject
está siendo llamado varias veces antes de que regrese el primero. Algunas de estas llamadas están devolviendo null
. La solución es asegurarse de que Cursor.nextObject
nunca se llama al mismo tiempo.
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));
}