Ensure that waitForAll functions catch and log thrown errors

This commit is contained in:
Scott Nonnenberg 2022-04-11 10:53:57 -07:00 committed by GitHub
parent 45fcf827dd
commit 9e54f55c22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 36 additions and 5 deletions

View file

@ -5,6 +5,7 @@ import PQueue from 'p-queue';
import { sleep } from './sleep';
import * as log from '../logging/log';
import * as Errors from '../types/errors';
import { clearTimeoutIfNecessary } from './clearTimeoutIfNecessary';
declare global {
@ -22,12 +23,26 @@ window.waitBatchers = [];
window.flushAllWaitBatchers = async () => {
log.info('waitBatcher#flushAllWaitBatchers');
await Promise.all(window.waitBatchers.map(item => item.flushAndWait()));
try {
await Promise.all(window.waitBatchers.map(item => item.flushAndWait()));
} catch (error) {
log.error(
'flushAllWaitBatchers: Error flushing all',
Errors.toLogFormat(error)
);
}
};
window.waitForAllWaitBatchers = async () => {
log.info('waitBatcher#waitForAllWaitBatchers');
await Promise.all(window.waitBatchers.map(item => item.onIdle()));
try {
await Promise.all(window.waitBatchers.map(item => item.onIdle()));
} catch (error) {
log.error(
'waitForAllWaitBatchers: Error waiting for all',
Errors.toLogFormat(error)
);
}
};
type ItemHolderType<ItemType> = {