()
| 24 | } |
| 25 | |
| 26 | private async refreshToken(): Promise<void> { |
| 27 | if (this.isRefreshing) { |
| 28 | // If already refreshing, wait for the current refresh to complete |
| 29 | if (this.refreshPromise) { |
| 30 | return this.refreshPromise; |
| 31 | } |
| 32 | return; |
| 33 | } |
| 34 | |
| 35 | this.isRefreshing = true; |
| 36 | this.refreshPromise = this.performTokenRefresh(); |
| 37 | |
| 38 | try { |
| 39 | await this.refreshPromise; |
| 40 | } finally { |
| 41 | this.isRefreshing = false; |
| 42 | this.refreshPromise = null; |
| 43 | } |
| 44 | } |
| 45 | |
| 46 | private async performTokenRefresh(): Promise<void> { |
| 47 | const response = await fetch(`${this.baseURL}/auth/refresh`, { |
no test coverage detected