code: function(action, context) {
              return function() {
                var args = Array.prototype.slice.call(arguments, 0);
                utils.compile(function() {
                  action.apply(context, args);
                });
              };
            }
docs: Returns a function which, each time it is invoked, will gather up the values until
  the next "tick" in the Angular compiler process. Then they are all run at the same
  time to avoid multiple cycles of the digest loop. Internally, this is done using $evalAsync()
  
  @param {Function} action
  @param {Object} [context]
  @returns {Function}