AngularJS: Inicializar de forma asíncrona el filtro

Tengo problemas para intentar inicializar un filtro con datos asíncronos.

El filtro es muy simple, necesita traducir las rutas al nombre, pero para hacerlo necesita una matriz de correspondencia, que necesito obtener del servidor.

Podría hacer cosas en la definición del filtro, antes de devolver la función, pero el aspecto asíncrono impide que

angular.module('angularApp').
  filter('pathToName', function(Service){
    // Do some things here

    return function(input){
      return input+'!'
    }
  }

El uso de una promesa puede ser viable, pero no entiendo bien cómo se filtran las cargas angulares. Estaenviar explica cómo lograr esa magia con servicios, pero ¿es posible hacer lo mismo con los filtros?

Y si alguien tiene una mejor idea sobre cómo traducir esos caminos, soy todo oídos.

EDITAR:

Lo intenté con el enfoque de la promesa, pero algo no está bien, y no veo qué:

angular.module('angularApp').filter('pathToName', function($q, Service){

  var deferred = $q.defer();
  var promise = deferred.promise;

  Service.getCorresp().then(function(success){
    deferred.resolve(success.data);
  }, function(error){
    deferred.reject();
  });

  return function(input){
    return promise.then(
      function(corresp){
        if(corresp.hasOwnProperty(input))
          return corresp[input];
        else
          return input;
      }
    )
  };
});

Realmente no estoy familiarizado con las promesas, ¿es la forma correcta de usarlas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta