'use strict'; function MapConfigAdapter (adapters) { this.adapters = Array.isArray(adapters) ? adapters : Array.apply(null, arguments); } module.exports = MapConfigAdapter; MapConfigAdapter.prototype.getMapConfig = function (user, requestMapConfig, params, context, callback) { var self = this; var i = 0; var tasksLeft = this.adapters.length; let mapConfigStats = {}; function next (err, _requestMapConfig, adapterStats = {}) { if (err) { return callback(err); } mapConfigStats = Object.assign(mapConfigStats, adapterStats); if (tasksLeft-- === 0) { return callback(null, _requestMapConfig, mapConfigStats); } var nextAdapter = self.adapters[i++]; nextAdapter.getMapConfig(user, _requestMapConfig, params, context, next); } next(null, requestMapConfig, mapConfigStats); };