Repetir o serviço AngularJS quando a promessa for rejeitada

Estou recebendo dados de um serviço assíncrono dentro do meu controlador assim:

myApp.controller('myController', ['$scope', 'AsyncService',
function($scope, AsyncService) {
    $scope.getData = function(query) {
        return AsyncService.query(query).then(function(response) {
            // Got success response, return promise
            return response;
        }, function(reason) {
            // Got error, query again in one second
            // ???
        });
    }
}]);

Minhas perguntas:

Como consultar o serviço novamente quando obtiver erro de serviço sem retornar a promessa.Seria melhor fazer isso no meu serviço?

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion