Ik weet nog steeds niet zeker wat de pauze veroorzaakt, maar het lijkt erop dat dit de boosdoener is.
Tijdens de pauze, Cursor.nextObject
wordt meerdere keren gebeld voordat de eerste terugkeert. Sommige van deze oproepen retourneren null
. De oplossing is om ervoor te zorgen dat Cursor.nextObject
wordt nooit gelijktijdig aangeroepen.
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));
}