code: function (target, methodName, args) {
      return perform(target, function (target) {
          return target.apply(methodName, args);
      }, function (target) {
          return target[methodName].apply(target, args);
      });
  }
docs: Invokes a method in a future turn.
  
  @param {Promise} target promise or value for target object
  @param {string} methodName name of method to invoke
  @param {Array} args array of invocation arguments
  @return {Promise} promise for the return value