Ainda não tenho certeza do que está causando a pausa, mas parece que é o culpado.
Durante a pausa,
Cursor.nextObject
está sendo chamado várias vezes antes do primeiro retorno. Algumas dessas chamadas estão retornando null
. A solução é garantir que Cursor.nextObject
nunca é chamado simultaneamente. 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));
}