[Refactoring] Avoid redundant promise rejections
This commit is contained in:
parent
3300d71e5d
commit
cad0c76d39
@ -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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user