async function processData(data, process, chunkSize, delay) {
for (let i = 0, j = 0; i < data.length; i++, j++) {
if (j === chunkSize) {
j = 0;
await new Promise(r => setTimeout(r, delay));
}
process(data[i]);
}
}
processData([...Array(10).keys()], console.log, 3, 1500).then(() => console.log('DONE'));