title: $apply already in progress error when using typeahead plugin (found to be related to ng-focus + ng-blur)
body: <p>My main problem is that the error is not pointing anywhere in my code and we dont have that many <code>$apply</code> calls in our project. The code that <strong>seems</strong> to be generating the error:</p>
  
  <pre><code> &lt;input type="text" 
    placeholder="{{ $root.pg.t('HEADER.CITY_OR_POSTAL') }}"
    data-ng-focus="decideToStop();" data-ng-blur="decideToStart()"
    data-ng-model="search.selected" 
    typeahead-on-select="search.locationQuery(geo_locations, search.selected)" 
    typeahead="location.name for location in getLocations($viewValue) | filter: $viewValue | limitTo:8" class="semi-bold"&gt;
  </code></pre>
  
  <p>In the controller:</p>
  
  <pre><code>$scope.decideToStop = function(){
    if($scope.actionTimeout){
      $timeout.cancel($scope.actionTimeout);
      $scope.actionTimeout = {};
    }
  
  
    $scope.MyService.CustomMethodThatDoesALotOfThings();
  };
  
  
  $scope.decideToStart = function(){
    if(CustomCondition()){
      $scope.actionTimeout = $timeout(function(){
        $scope.MyService.AnotherCustomMethodThatDoesALotOfThings();
  
      }, 150);
  
    }
  };
  </code></pre>
  
  <p><code>$root.pg</code> is just the polyglot.js library inside a service that is placed in the <code>rootScope</code> for now. <code>search</code> is the service corresponding to the location search.</p>
  
  <p>I am getting the error when I change the city in the input field. I have no idea how to debug this...</p>