title: Getting AngularJS Error: "[$rootScope:inprog] $digest already in progress" without a manual $apply
body: <p>Other posts on this error always include someone trying to $apply without using a safe apply, but that's not the case in my example. My function IS successfully returning the data I requested from the API, but I can't clean this bug and it's driving me nuts.
  Every time before the .success is called in my $http function I get "Error: [$rootScope:inprog] $digest already in progress" in the console. Below are my controller and service. Thanks!</p>
  
  <p>Here's my service including a function to post an $http call with a payload:</p>
  
  <pre><code>Services.service( 'CoolService', ['$q', '$rootScope', '$http', 'Auth', function($q, $rootScope, $http, Auth){
  var service = {
      create: function(payload){
          var deferred = $q.defer();
          $http({
              'url': '/api/endpoint/',
              'dataType':'json',
              'method': 'POST',
              data: payload
          }).success(function(data,status, headers, config){
              deferred.resolve(data);
  
          })
          .error(function(data, status, headers, config){
              deferred.reject("Error in request.");
          });
          return deferred.promise;
          }
      }
      return service;
  }]);
  </code></pre>
  
  <p>And here's my controller which calls the service:</p>
  
  <pre><code>controllers.controller('CoolCtrl',['$scope', '$modal', '$log','CoolService', function($scope, $modal, $log, CoolService){
      getCoolData = function (input_data) {
          CoolService.create(input_data).then(function(results){
              new_cool = results.results;
          }, function(error){
          console.log("there was an error getting new cool data");
          });
      };
      var payload = {
          user_id: data1,
          cool_id: data2,
      }
      var new_cool_data = getCoolData(payload);
      console.log(new_cool_data);
  }]);
  </code></pre>
  
  <p>The log below var new_cool_data gets called before the async operation, but new_cool does get assigned inside the .then statement within getCoolData.
  Any help getting rid of this bug or making it not crappy in general would be greatly appreciated!</p>
  
  <p>Here's the whole error:
  <a href="https://gist.github.com/thedore17/bcac9aec781ef9ba535b">https://gist.github.com/thedore17/bcac9aec781ef9ba535b</a></p>