code: function(options) {
  
        // An error is thrown if no steps are defined.
        if (!this.steps.length) {
          throw new Error('No step defined');
        }
  
        // Run options are built by overriding construction options
        // with runtime options. Runtime options come from the command line and/or
        // configuration file; they are handled in [cli.command.js](cli.command.js.html).
        var runOptions = merge(this.baseOptions, options || {});
        _.defaults(runOptions, this.defaultRunOptions);
  
        var promise = q(runOptions);
        _.each(this.beforeRun, function(pre) {
          promise = promise.then(_.bind(pre, this)).then(_.bind(q, undefined, runOptions));
        }, this);
  
        // Runtime parameters are loaded and validated before actually running the scenario.
        // This is handled in [scenario.ext.params.js](scenario.ext.params.js.html).
        return promise.then(_.bind(this.runScenario, this, runOptions));
      }
docs: ### #run(options) Runs this scenario with the specified runtime options. Available options are the same as for the [constructor](#constructor).  Returns a promise that is resolved if the scenario completed successfully, or rejected if any step fails and it was interrupted.