Tôi vẫn không chắc điều gì gây ra việc tạm dừng, nhưng có vẻ như đó là thủ phạm.
Trong khi tạm dừng, Cursor.nextObject được gọi nhiều lần trước khi trả về đầu tiên. Một số cuộc gọi này đang trả về null . Giải pháp là đảm bảo Cursor.nextObject không bao giờ được gọi đồng thời.
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));
}