Но я не могу понять, как в «линейном» коде метода init() дождаться появления этих данных.
Правильный ответ — никак. Вообще XMLHhttpRequest может работать синхронно, но по понятными причинам это почти никогда не используется.
Почему в цикле while() не отслеживаетс изменение свойства loadStatus? Как сделать чтоб отслеживалось?
Значение переменной отслеживается, просто оно неизменяется. Чтобы оно изменилось, должен сработать колбэк, а для этого нужно, что выполнение кода завершилось. То есть, сделать то, что вы задумали, невозможно впринципе.
Встраивать обработчики прямо в «линейный» код как лямбды — это издевательство, код получает рваный и плохо сопровождаемый.
Это javascript, привыкайте