Je ne sais toujours pas ce qui cause la pause, mais il semble que ce soit le coupable.
Pendant la pause, Cursor.nextObject
est appelé plusieurs fois avant le premier retour. Certains de ces appels renvoient null
. La solution est de s'assurer que Cursor.nextObject
n'est jamais appelé simultanément.
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));
}