lib/Serverless.js/Serverless/run
class Serverless:  run() {
    this.utils.logStat(this).catch(() => BbPromise.resolve());

    if (this.cli.displayHelp(this.processedInput)) {
      return BbPromise.resolve();
    }

    // make sure the command exists before doing anything else
    this.pluginManager.validateCommand(this.processedInput.commands);

    // populate variables after --help, otherwise help may fail to print
    // (https://github.com/serverless/serverless/issues/2041)
    this.variables.populateService(this.pluginManager.cliOptions);

    // trigger the plugin lifecycle when there's something which should be processed
    return this.pluginManager.run(this.processedInput.commands);
  }