Criar promessa no AngularJS

Estou tentando criar uma promessa no Angular com o serviço $ q. Retorna um objeto recuperado de um serviço da web. Se o objeto estiver no cache, ele o retornará sem chamar o serviço da web.

O problema é que as duas resoluções estão sendo chamadas.

Talvez, eu estou usando um anti-padrão de promessa?

Aqui está o meu código:

    function returnMapAsync() {

  return $q(function (resolve, reject) {
    if (navigationMap) {
      resolve(navigationMap);
    } else {
      ServerRequest.getNavigationMap().then(function (data) {
        navigationMap = data.object;
        resolve(navigationMap);
      });
    }
  });
}

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion