Да, событие может произойти до того, как метрика будет загружена, если код метрики не загружен на странице в момент совершения события.
Для того чтобы отправить конверсию в Яндекс Метрику только после загрузки кода метрики через Google Tag Manager, можно использовать встроенный слушатель событий загрузки скрипта метрики. Необходимо создать пользовательское событие в Google Tag Manager, которое будет срабатывать при загрузке скрипта метрики.
В этом пользовательском событии можно указать триггер на загрузку скрипта метрики, после чего поместить тэг отправки конверсии в Яндекс Метрику в этот триггер. Таким образом, конверсия будет отправляться только после загрузки кода метрики.
Использование setTimeout для ожидания загрузки кода не требуется, так как Google Tag Manager предоставляет более надежные и удобные способы контроля последовательности загрузки скриптов и отправки конверсий.