export function delayUntil( maxMs: number, isReady: () => boolean | undefined | Promise, timeoutTime = 100, ): Promise { const maxTime = Date.now() + maxMs; async function hackyFix(resolve: () => void) { if ((await isReady()) || Date.now() >= maxTime) { resolve(); } else { setTimeout(() => { hackyFix(resolve); }, timeoutTime); } } return new Promise((resolve) => hackyFix(resolve)); }