[Refactoring] Avoid redundant promise rejections

This commit is contained in:
Alexander Zinchuk 2022-05-30 15:40:25 +04:00
parent 3300d71e5d
commit cad0c76d39
2 changed files with 11 additions and 4 deletions

View File

@ -1149,11 +1149,14 @@ class TelegramClient {
}
function timeout(cb, ms) {
let isResolved = false;
return Promise.race([
cb(),
Helpers.sleep(ms)
.then(() => Promise.reject(new Error('TIMEOUT'))),
]);
Helpers.sleep(ms).then(() => isResolved ? undefined : Promise.reject(new Error('TIMEOUT'))),
]).finally(() => {
isResolved = true;
});
}
async function attempts(cb, times, pause) {

View File

@ -34,15 +34,19 @@ export async function respondWithCache(e: FetchEvent) {
}
async function withTimeout<T>(cb: () => Promise<T>, timeout: number) {
let isResolved = false;
try {
return await Promise.race([
pause(timeout).then(() => Promise.reject(new Error('TIMEOUT'))),
pause(timeout).then(() => (isResolved ? undefined : Promise.reject(new Error('TIMEOUT')))),
cb(),
]);
} catch (err) {
// eslint-disable-next-line no-console
console.error(err);
return undefined;
} finally {
isResolved = true;
}
}