callListeners: async function callListeners()

in lib/sequential_executor.js [91:126]


  callListeners: async function callListeners(listeners, args, doneCallback) {
    if (listeners.length === 0) {
      doneCallback.call(this);
    } else {
      var listener = listeners.shift();
      if (listener._isAsync) {

        // asynchronous listener
        try {
          await new Promise((resolve, reject) => {
            listener.apply(this, args.concat([function(err) {
              if (err) {
                reject(err);
              } else {
                resolve();
              }
            }]));
          });
          await this.callListeners(listeners, args, doneCallback);
        } catch (err) {
          doneCallback.call(this, err);
        }

      } else {

        // synchronous listener
        try {
          listener.apply(this, args);
          await this.callListeners(listeners, args, doneCallback);
        } catch (err) {
          doneCallback.call(this, err);
        }

      }
    }
  },