Насколько мне известно, в сеансе веб-браузера не может быть "состояния гонки", в основном потому, что каждая вкладка в веб-браузере выполняется в одном потоке, поэтому ваша логика будет выполняться в одном цикле выполнения. Вы можете использовать этот факт для реализации флага, указывающего, что происходит в первую очередь, но (честно) это довольно уродливо.
Я думаю, что самое элегантное решение должно состоять в том, чтобы сделать функцию evaluate
идемпотентной, чтобы вам было все равно, если она вызывается несколько раз.