async spawn(commandsArray, options) {
    let commands = commandsArray
    if (typeof commandsArray === 'string') {
      commands = commandsArray.split(':')
    }
    await this.invoke(commands, true)
    if (_.get(options, 'terminateLifecycleAfterExecution', false)) {
      throw new TerminateHookChain(commands)
    }
  }
Invokes the given command and starts the command's lifecycle.
This method can be called by plugins directly to spawn a separate sub lifecycle.