[Refactoring] Avoid redundant promise rejections
This commit is contained in:
parent
3300d71e5d
commit
cad0c76d39
@ -1149,11 +1149,14 @@ class TelegramClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function timeout(cb, ms) {
|
function timeout(cb, ms) {
|
||||||
|
let isResolved = false;
|
||||||
|
|
||||||
return Promise.race([
|
return Promise.race([
|
||||||
cb(),
|
cb(),
|
||||||
Helpers.sleep(ms)
|
Helpers.sleep(ms).then(() => isResolved ? undefined : Promise.reject(new Error('TIMEOUT'))),
|
||||||
.then(() => Promise.reject(new Error('TIMEOUT'))),
|
]).finally(() => {
|
||||||
]);
|
isResolved = true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function attempts(cb, times, pause) {
|
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) {
|
async function withTimeout<T>(cb: () => Promise<T>, timeout: number) {
|
||||||
|
let isResolved = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return await Promise.race([
|
return await Promise.race([
|
||||||
pause(timeout).then(() => Promise.reject(new Error('TIMEOUT'))),
|
pause(timeout).then(() => (isResolved ? undefined : Promise.reject(new Error('TIMEOUT')))),
|
||||||
cb(),
|
cb(),
|
||||||
]);
|
]);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return undefined;
|
return undefined;
|
||||||
|
} finally {
|
||||||
|
isResolved = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user