_invokeUndo(command) {
    this.lock();

    let { args } = command;
    if (!args) {
      args = [];
    }

    return command
      .undo(...args)
      .then((value) => {
        this.pushRedoStack(command);
        this.fire(eventNames.AFTER_UNDO, command);
        this.unlock();
        if (isFunction(command.undoCallback)) {
          command.undoCallback(value);
        }

        return value;
      })
      ['catch']((message) => {
        this.unlock();

        return Promise.reject(message);
      });
  }
Invoke command undo
@param {Command} command - Command
@returns {Promise}
@private