JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://rawgit.com/dfahlander/Dexie.js/master/src/Dexie.js"></script>

JavaScript

// CONFIGURACOES DA DB //
var db = new Dexie('teste');

db.version(1).stores({
    sequences: '++id,of'
});
db.open().
catch ();
// CONFIGURACOES DA DB //

var executionOrder = [];
var semaforo = true; // Aberto
var no = 0;

// isso foi o exemplo mais pratico que encontrei.. é um exemplo em que o servidor envia 4 mensagens (ou mais) seguidas e ao "mesmo tempo", ele nao checa se há algo sendo executado, no caso se houvesse ele deveria esperar até o fim para enviar a nova requisiçao

// NOVO: adiciona um
// APAGA: deleta todos
// A INTENÇAO AQUI E QUE: ELE NAO VA PARA PROXIMA FUNCAO SEM TER EXECUTADO TUDO QUE ´E NECESSARIO.

// Neste caso ele deve: CRIAR UM NOVO
//                      CRIAR UM NOVO
//                      APAGAR OS DOIS CRIADOS ACIMA (TUDO)
//                      CRIAR UM NOVO
//                      APAGAR O ULTIMO CRIADO (TUDO)
// tudo isso 2 vezes, porém em ordem  sem agrupar nem alterar a ordem de execuçao

setInterval(function () {
    var newOrder = ['NOVO', 'NOVO', 'APAGA', 'NOVO', 'APAGA'];
    executionOrder = executionOrder.concat(newOrder);
    callback();
}, 4000);
setInterval(function () {
    var newOrder = ['NOVO', 'NOVO', 'APAGA', 'NOVO', 'APAGA'];
    executionOrder = executionOrder.concat(newOrder);
    callback();
}, 4000);

function execute(req) {
     if (req == 'NOVO') {
         semaforo = false; // Fechado
        db.sequences.add({
            of: '0'
        }).then(function () {
            semaforo = true;
            if ( no < 20 )
            console.log('ADD 1 [' + (++no) + ']');
            callback();
        });
    } else if (req == 'APAGA') {
        semaforo = false; // Fechado
        db.sequences.where("of").equalsIgnoreCase('0').each(function (seq) {
            db.sequences.delete(seq.id);
        }).then(function () {
            semaforo = true; // Fechado
            if ( no < 20 )
            console.log('DEL ALL [' + (++no) + ']');
            callback();
        });
    }
};

function callback() {
  ...