@@ -34,42 +34,44 @@ export default function authMiddleware(opts?: AuthMiddlewareOpts): Middleware {
34
34
35
35
let tokenRefreshInProgress = null ;
36
36
37
- return next => async req => {
38
- try {
37
+ return next => req => {
38
+ return new Promise ( ( resolve , reject ) => {
39
39
// $FlowFixMe
40
- const token = await ( isFunction ( tokenOrThunk ) ? tokenOrThunk ( req ) : tokenOrThunk ) ;
40
+ const token : string = isFunction ( tokenOrThunk ) ? tokenOrThunk ( req ) : tokenOrThunk ;
41
41
42
42
if ( ! token && tokenRefreshPromise && ! allowEmptyToken ) {
43
- throw new WrongTokenError ( 'Empty token' ) ;
43
+ reject ( new WrongTokenError ( 'Empty token' ) ) ;
44
44
}
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
+ }
45
65
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
61
69
} ) ;
62
70
}
63
-
64
- return tokenRefreshInProgress . then ( newToken => {
65
- req . headers [ header ] = `${ prefix } ${ newToken } ` ;
66
- return next ( req ) ; // re-run query with new token
67
- } ) ;
68
71
}
69
72
}
70
- }
71
73
72
- throw e ;
73
- }
74
+ throw e ;
75
+ } ) ;
74
76
} ;
75
77
}
0 commit comments