const async = require('async');

var processQueue = function (message, callback) {
    setTimeout(function() {
        console.log(`Task ${message} completed`);
        callback();
    }, 500);
}

var queue = async.queue(processQueue, 3);

queue.drain = function() {
    console.log('Yuppie all tasks completed');
}

var processTasks = function () {
    for (let index = 1; index <= 10; index++) {
        queue.push(index);
    }
}

processTasks();