code: function(expr) {
          var scope = this;
          expr && applyAsyncQueue.push($applyAsyncExpression);
          expr = $parse(expr);
          scheduleApplyAsync();
  
          function $applyAsyncExpression() {
            scope.$eval(expr);
          }
        }
docs: @ngdoc method
  @name $rootScope.Scope#$applyAsync
  @kind function
  
  @description
  Schedule the invocation of $apply to occur at a later time. The actual time difference
  varies across browsers, but is typically around ~10 milliseconds.
  
  This can be used to queue up multiple expressions which need to be evaluated in the same
  digest.
  
  @param {(string|function())=} exp An angular expression to be executed.
  
  - `string`: execute using the rules as defined in {@link guide/expression expression}.
  - `function(scope)`: execute the function with current `scope` parameter.