myst-cli
Version:
Command line tools for MyST
17 lines (16 loc) • 533 B
JavaScript
/**
* Resolve all promises
*
* Errors are caught so successful promises can resolve. Then errors are logged.
*/
export async function resolveAndLogErrors(session, promises, throwOnFailure) {
let errors = await Promise.all(promises.map((p) => p.catch((e) => e)));
errors = errors.filter((e) => e instanceof Error);
errors.forEach((e) => {
session.log.debug(`\n\n${e?.stack}\n\n`);
session.log.error(e);
});
if (throwOnFailure && errors.length > 0)
throw errors[0];
return errors;
}