Создать обещание в AngularJS

Я пытаюсь создать обещание в Angular с помощью сервиса $ q. Возвращает объект, полученный из веб-службы. Если объект находится в кеше, он возвращает его без вызова веб-службы.

Проблема состоит в том, что оба решают вызваны.

Может быть, я использую обещание анти-шаблон?

Вот мой код:

    function returnMapAsync() {

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

Спасибо