Все още не съм сигурен какво причинява паузата, но изглежда това е виновникът.
По време на паузата, Cursor.nextObject
се обажда няколко пъти, преди първият да се върне. Някои от тези обаждания връщат null
. Решението е да се уверите, че Cursor.nextObject
никога не се извиква едновременно.
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));
}