Вы должны использовать checkBatch
в качестве рабочего очереди, а не в качестве обратного вызова для отдельного элемента:
const q = async.queue((task, cb) => {
checkBatch(task).then(res => cb(null, res), err => cb(err));
});
for (let i = 0; i < MAX_CHECKS; i++) {
q.push({ name: 'batch' + i }, (err, res) => console.log(`batch${i} processed`);}););
}
Однако async.js не очень хорошо согласуется с обещаниями, как вы можетевидите, вам лучше выбрать библиотеку очередей с поддержкой обещаний.
Или полностью отказаться от потребности в очереди и просто написать
for (let i = 0; i < MAX_CHECKS; i++) {
await checkBatch({ name: 'batch' + i });
console.log(`batch${i} processed`);
}