JSFiddle - React, Tailwind, and code Playground

JavaScript

var Anonimo = {
    minhaFuncao: function(indice, callback) {
        //faz algumas coisas
        //finaliza com callback
        setTimeout(function() {
            callback(indice, 'retornaAlgumaVariavel');
        }, Math.random() * 500 + 100);
    }
}
var OutroAnonimo = {
    outraFuncao: function(callback) {
        //faz algumas coisas
        //finaliza com callback
        setTimeout(function() {
            callback();
        }, Math.random() * 500 + 100);
    }
}

function processar(arr) {
    if (arr.length == 0) return;
    var nr = arr.shift(); // e aqui encurta ao mesmo tempo a array
    console.log("Valor " + nr);
    Anonimo.minhaFuncao(nr, function(ind, variavelRetorno) {
        console.log("Entrou no indice " + ind);
        OutroAnonimo.outraFuncao(function() {
            console.log("Passou aqui... e terminou o indice", ind);
            processar(arr);
        });
    });
}

// para gerar o conteudo
var valores = [];
for (var i = 0; i < 15; i++) {
    valores.push(i);
}
processar(valores);