cc-zos
Version:
Command-line interface for the ZeppelinOS smart contract platform
40 lines (32 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.allPromisesOrError = allPromisesOrError;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function allPromisesOrError(promisesWithObjects, toErrorMessage) {
const failures = [];
const handlingFailure = async item => {
let promise,
object = null;
try {
if (_lodash2.default.isArray(item)) {
[promise, object] = item;
} else {
promise = item;
}
return await promise;
} catch (error) {
failures.push([error, object]);
return null;
}
};
const results = await Promise.all(_lodash2.default.map(promisesWithObjects, handlingFailure));
if (!_lodash2.default.isEmpty(failures)) {
const message = failures.map(([err, obj]) => toErrorMessage ? toErrorMessage(err, obj) : err.message || err).join('\n');
throw Error(message);
}
return results;
}