code: function Scenario(options) {
      if (!_.isObject(options)) {
        throw new Error('Options must be an object');
      } else if (!_.isString(options.name)) {
        throw new Error('"name" must be a string, got ' + options.name);
      }
  
      this.name = options.name;
      this.summary = options.summary;
      this.logger = log4js.getLogger(this.name);
  
      this.baseOptions = _.extend({}, options);
  
      this.steps = [];
  
      _.each(this.initializers, function(initializer) {
        initializer.call(this);
      }, this);
  
      // Most of these options are not handled by the scenario object itself.
      // The `configure` event is emitted with all the options when the scenario is
      // run (see the `#run` method). Other components listen to that event to
      // update their configuration.
      //
      // The scenario itself listens to that event, and also forwards it to
      // the HTTP client.
      events.EventEmitter.call(this);
      this.on('configure', _.bind(this.onConfigure, this));
    }
docs: <a name="constructor"></a> ## Constructor Constructs a new scenario with no steps.  **Options:**  * `name` **required** - the name of the scenario; * `log` - log level (trace, debug or info); * `baseUrl` - the base URL to use for HTTP calls; * `showTime` - print the date and time with each log; * `showRequest` - print options for each HTTP request (only with debug or trace log levels); * `showResponseBody` - print response body for each HTTP request (only with debug or trace log levels); * `showFullUrl` - always print full URLs even when a base URL is configured (only with debug or trace log levels).