É uma operação assíncrona, se ela demorar 2 segundos etc... quem for utilizar a propriedade não terá o valor se esse acesso for em menos de 2 segundos.
Em teoria você fez certo, mas você teria guardar o resultado na propriedade do seu controller. No curso de Angular eu faço isso quando busco as fotos do servidor e guardo-as na propriedade do controller.
Angular é um framework que só ajuda na organização do código, todo código assíncrono, modelo de callbacks e essas coisas mais iniciais do JavaScript são incorporadas nele também.
Vi no seu perfil que não concluiu os cursos de JavaScript da carreira. Talvez seja legal passar por eles para consolidar ainda mais seu conhecimento. Inclusive no curso de JavaScript é ensinado XMLHttpquest e como lidar com código assíncrono.