I would like to ask is it possible to return recursive factory method. I will show some code so you could understand me more. We have factory:
angular.module('module')
.factory('synchronizationStatus', ['$http', 'apiBase', '$timeout', function ($http, apiBase, $timeout) {
    var service_url = apiBase.url;
    function syncCompleted ( correlationId ) {
        checkSync (correlationId)
            .then(function(response){
                $timeout(function() {
                    // if I get response.data true, i want to proceed to controller
                    if(response.data){
                        return "now I want to return result to controller"
                    }
                    else {
                        // check again
                        checkSync(correlationId)
                    }
                }, 500);
            })
    }
    function checkSync( correlationId ){
        return $http.get(service_url + query);
    }
    return {
        syncCompleted: syncCompleted
    };
}]);
Main idea with this factory method is that i constantly (every 500ms each) send ajax request to backend and check if some operation is completed or no, and when it is completed i would like to send promise to controller function, which looks like this:
function save( client ) {
        clients.addClient( client )
            .then( function(response) {
              synchronizationStatus.syncCompleted(response.data.CorrelationId);
            }, onSaveError)
            .then( redirectToList, onSaveError )
            .finally( unblock );
    }
after backend returns true to my factory method i would like to execute other functions in my controller. Of course I could do recursion in my controller and it would solve this problem. Although I have to reuse this recursion in many other controllers so I would like to reuse this method.
 
     
    