Помощь в написании корректно работающего правила

Про when понял, благодарю

Использовал данный пример. Сначала не понял, нужно ли var кидать в само правило (в then), попробовал, возникла та же проблема с очередью, что было ожидаемо, но, когда я вытащил var timer вне всякого правила все заработало как и должно было с самого начала. Я посидел, понаблюдал за значениями и пока кажется, что все считается корректно!
Правда вопрос про очередь остается, т.к, хоть я и вытащил var за само правило, проблема с очередью должна была остаться, разве нет?
В итоге все работает хорошо, callback срабатывает по интервалу как и надо, благодарю за подробное объяснение!

Прикрепляю рабочий код, который я получил в итоге (чуть измененный от примера):

defineVirtualDevice('StandCoef', {
    title: 'StandVars',
    cells: {
        value: {
            type: 'value',
            value: 0
        }
    }
});

var timer = setInterval( function() {
    if (dev["dev1/ch2"] !== 0) {
        dev["StandCoef/value"] = (1e3 * dev["dev1/ch1"]) / dev["dev1/ch2"];
    }
    else {
        dev["StandCoef/value"] = -1
    }
}, 2000 );

Буду наблюдать за этой ситуацией дальше