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);
}
}
}
},