Skip to content

Commit 232f886

Browse files
authored
feat: support abort signal for fetch calls
1 parent 2b5df9f commit 232f886

File tree

1 file changed

+13
-26
lines changed

1 file changed

+13
-26
lines changed

sdk/utils.ts

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -46,37 +46,24 @@ export const retryFetch = (
4646
url: string,
4747
fetchOptions: RequestInit,
4848
retries: number = 3,
49-
timeout: number = 10 // set an overall timeout for this function
49+
timeoutMs: number = 10 // set an overall timeout for this function
5050
): Promise<Response> => {
5151
return new Promise((resolve, reject) => {
5252
const retryWrapper = (n: number) => {
53-
requestWrapper()
54-
.then(res => resolve(res))
55-
.catch(async err => {
56-
if (n > 0) {
57-
await delay(1000);
58-
retryWrapper(--n);
59-
} else {
60-
reject(err);
61-
}
62-
});
63-
};
64-
65-
const requestWrapper = (): Promise<Response> => {
66-
return new Promise((resolve, reject) => {
67-
let timeoutId: NodeJS.Timeout;
68-
if (timeout) {
69-
timeoutId = setTimeout(() => reject('error: timeout'), timeout);
53+
fetch(url, {
54+
...fetchOptions,
55+
signal: AbortSignal.timeout(timeoutMs)
56+
})
57+
.then(res => resolve(res))
58+
.catch(async err => {
59+
if (n > 0) {
60+
await delay(1000);
61+
retryWrapper(--n);
62+
} else {
63+
reject(err);
7064
}
71-
return fetch(url, fetchOptions)
72-
.then(res => resolve(res))
73-
.catch(err => reject(err))
74-
.finally(() => {
75-
if (timeoutId) {
76-
clearTimeout(timeoutId);
77-
}
78-
});
7965
});
66+
8067
};
8168

8269
retryWrapper(retries);

0 commit comments

Comments
 (0)