Skip to content

Commit 5a1970f

Browse files
committed
fix: revert async/await to Promise for removing regenerator-runtime deps
closes #54
1 parent 71b39a1 commit 5a1970f

File tree

2 files changed

+46
-39
lines changed

2 files changed

+46
-39
lines changed

src/fetchWithMiddleware.js

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type {
99
MiddlewareNextFn,
1010
} from './definition';
1111

12-
async function runFetch(req: RRNLRequestObject): Promise<RRNLResponseObject> {
12+
function runFetch(req: RRNLRequestObject): Promise<RRNLResponseObject> {
1313
let { url, ...opts } = req;
1414

1515
if (!url) {
@@ -20,17 +20,22 @@ async function runFetch(req: RRNLRequestObject): Promise<RRNLResponseObject> {
2020
}
2121
}
2222

23-
const res = await fetch(url, opts);
24-
25-
if (res.status < 200 || res.status >= 300) {
26-
const text = await res.text();
27-
const err: any = new Error(text);
28-
err.fetchResponse = res;
29-
throw err;
30-
}
31-
32-
const payload = await res.json();
33-
return { ...res, payload };
23+
return fetch(url, opts)
24+
.then(res => {
25+
if (res.status < 200 || res.status >= 300) {
26+
return res.text().then(text => {
27+
const err: any = new Error(text);
28+
err.fetchResponse = res;
29+
throw err;
30+
});
31+
}
32+
return res;
33+
})
34+
.then(res => {
35+
return res.json().then(payload => {
36+
return { ...res, payload };
37+
});
38+
});
3439
}
3540

3641
export default function fetchWithMiddleware(

src/middleware/auth.js

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,42 +34,44 @@ export default function authMiddleware(opts?: AuthMiddlewareOpts): Middleware {
3434

3535
let tokenRefreshInProgress = null;
3636

37-
return next => async req => {
38-
try {
37+
return next => req => {
38+
return new Promise((resolve, reject) => {
3939
// $FlowFixMe
40-
const token = await (isFunction(tokenOrThunk) ? tokenOrThunk(req) : tokenOrThunk);
40+
const token: string = isFunction(tokenOrThunk) ? tokenOrThunk(req) : tokenOrThunk;
4141

4242
if (!token && tokenRefreshPromise && !allowEmptyToken) {
43-
throw new WrongTokenError('Empty token');
43+
reject(new WrongTokenError('Empty token'));
4444
}
45+
resolve(token);
46+
})
47+
.then(token => {
48+
if (token) {
49+
req.headers[header] = `${prefix}${token}`;
50+
}
51+
return next(req);
52+
})
53+
.catch(e => {
54+
if (e && tokenRefreshPromise) {
55+
if (e.message === 'Empty token' || (e.fetchResponse && e.fetchResponse.status === 401)) {
56+
if (tokenRefreshPromise) {
57+
if (!tokenRefreshInProgress) {
58+
tokenRefreshInProgress = Promise.resolve(
59+
tokenRefreshPromise(req, e.fetchResponse)
60+
).then(newToken => {
61+
tokenRefreshInProgress = null;
62+
return newToken;
63+
});
64+
}
4565

46-
if (token) {
47-
req.headers[header] = `${prefix}${token}`;
48-
}
49-
const res = await next(req);
50-
return res;
51-
} catch (e) {
52-
if (e && tokenRefreshPromise) {
53-
if (e.message === 'Empty token' || (e.fetchResponse && e.fetchResponse.status === 401)) {
54-
if (tokenRefreshPromise) {
55-
if (!tokenRefreshInProgress) {
56-
tokenRefreshInProgress = Promise.resolve(
57-
tokenRefreshPromise(req, e.fetchResponse)
58-
).then(newToken => {
59-
tokenRefreshInProgress = null;
60-
return newToken;
66+
return tokenRefreshInProgress.then(newToken => {
67+
req.headers[header] = `${prefix}${newToken}`;
68+
return next(req); // re-run query with new token
6169
});
6270
}
63-
64-
return tokenRefreshInProgress.then(newToken => {
65-
req.headers[header] = `${prefix}${newToken}`;
66-
return next(req); // re-run query with new token
67-
});
6871
}
6972
}
70-
}
7173

72-
throw e;
73-
}
74+
throw e;
75+
});
7476
};
7577
}

0 commit comments

Comments
 (0)