code: function(action, data) {
  
      if(isUndefined(data)) {
        data = {};
      } else if(!isObject(data) && !isFunction) {
        throw new Error('Data passed to an advisor action must be in instance of Object.');
      }
  
      var executeAction;
      if(isFunction(data)) {
        executeAction = compose(this._askAdvisor.actions[action], data)
      } else {
        executeAction = partial(this._askAdvisor.actions[action], data);
      }
  
      this.then(function(advisorEvent, deferred, consequenceActions, streamEvent) {
        data.triggeringEvents = {
          advisor: advisorEvent,
          stream: streamEvent
        };
        if(isFunction(data)) {
          executeAction(advisorEvent, streamEvent);
        } else {
          if(this._waitTime) {
            setTimeout(function(){
              executeAction();
              deferred.resolve();
            }, this._waitTime);
            return;
          } else {
            executeAction();
          }
        }
        deferred.resolve();
      });
  
      // terminate chain
      return this;
    }
docs: Invoke an action from an Advisor specified in a prior chained call to
  #ask(Advisor)
  
  @function to
  @name to
  @instance
  @memberof Law