Может быть две стратегии:
1: Создайте свою структуру так, чтобы вы вызывали событие 2 в обработчике событий для события 1.
2: В обработчике для события 2 проверьте значение глобальной переменной, скажем, что это просто логическое значение, если оно истинно, затем продолжите работу обработчика события 2 и установите логическое значение равным false, а если значение false, рекурсивно вызовите с помощью setTimeout.
В обработчике для события 1 установите для этого логического значения значение true.
Это очень грубая реализация мьютекса, которая позволит сериализовать только два события.