Es lógico que obtengas ese resultado. Es decir, la petición es asíncrona, pero lees el contenido de la variable de forma síncrona, por eso no logras obtener el valor luego de concluida la petición.
Tienes dos soluciones: o lees el valor en la llamada de retorno o usa una
promesa, aunque sería algo similar.