Я подозреваю, что ваши вызовы trace () работают, но вывод сбивает с толку из-за ленивой оценки, что означает, что вещи часто оцениваются в порядке, отличном от того, что вы ожидаете. На самом деле оптимизатор может иногда переставлять выражения, которые вы пишете в исходном коде, во что-то совершенно другое.
Вы пробовали отладчики в таких инструментах, как Stylus Studio или oXygen? Обычно они отключают некоторые оптимизации, делая последовательность выполнения более понятной.