Как работают переменные в Javascript?
конечно выдает до onload, ведь onload это callback, он произойдет после загрузки изображения. У вас код тупо идет дальше.
Код выполняеся последовательно. И конечно он не ждет когда там загрузится картинка.
Поправить так:
1) Современный способ: asyc/await
2) Дедовский способ: SetInterval - в функции проверяем proxy, если true - сбрасываем SetInteval и делаем что там хотелось сделать с картинкой.