export async function* batchTasks(tasks = [], limit = 5, taskCallback = r => r) { for (let i = 0; i < tasks.length; i = i + limit) { const batch = tasks.slice(i, i + limit) yield* await Promise.all( batch.map((task) => task().then(taskCallback)) ) } }