sendMessageList(source, messages = []) {
    window.Promise.resolve().then(() => {
      messages.forEach(([event, ...args]) => {
        var list = this.getCachedCallbacks(event);
        if (list && list.length) {
          const runnableFunctions = list
            .filter((f) => !f.enableSelfTrigger)
            .filter(
              (f) => f.enableAllTrigger || f.originalCallback.source !== source
            );

          let i = runnableFunctions.length;
          while (i--) {
            const f = runnableFunctions[i];

            this.runMessage(f, args);
          }
        } else {
          this.debug(`message event ${event} is not exist.`);
        }
      });
    });
  }
run multi messages

message.callback can has a return value.

if return value is false then message will be skip.
if return value is function then message will be skip after run return function.

@param {string} source
@param {Command[]} messages