@@ -98,6 +98,11 @@ class AuthBackend {
98
98
class func request( withURL url: URL ,
99
99
contentType: String ,
100
100
requestConfiguration: AuthRequestConfiguration ) async -> URLRequest {
101
+ // Kick off tasks for the async header values.
102
+ async let heartbeatsHeaderValue = requestConfiguration. heartbeatLogger? . asyncHeaderValue ( )
103
+ async let appCheckTokenHeaderValue = requestConfiguration. appCheck?
104
+ . getToken ( forcingRefresh: true )
105
+
101
106
var request = URLRequest ( url: url)
102
107
request. setValue ( contentType, forHTTPHeaderField: " Content-Type " )
103
108
let additionalFrameworkMarker = requestConfiguration
@@ -106,13 +111,6 @@ class AuthBackend {
106
111
request. setValue ( clientVersion, forHTTPHeaderField: " X-Client-Version " )
107
112
request. setValue ( Bundle . main. bundleIdentifier, forHTTPHeaderField: " X-Ios-Bundle-Identifier " )
108
113
request. setValue ( requestConfiguration. appID, forHTTPHeaderField: " X-Firebase-GMPID " )
109
- if let heartbeatLogger = requestConfiguration. heartbeatLogger {
110
- // The below call synchronously dispatches to a queue. To avoid blocking
111
- // the shared concurrency queue, `async let` will spawn the process on
112
- // a separate thread.
113
- async let heartbeatsHeaderValue = heartbeatLogger. headerValue ( )
114
- await request. setValue ( heartbeatsHeaderValue, forHTTPHeaderField: " X-Firebase-Client " )
115
- }
116
114
request. httpMethod = requestConfiguration. httpMethod
117
115
let preferredLocalizations = Bundle . main. preferredLocalizations
118
116
if preferredLocalizations. count > 0 {
@@ -122,8 +120,9 @@ class AuthBackend {
122
120
languageCode. count > 0 {
123
121
request. setValue ( languageCode, forHTTPHeaderField: " X-Firebase-Locale " )
124
122
}
125
- if let appCheck = requestConfiguration. appCheck {
126
- let tokenResult = await appCheck. getToken ( forcingRefresh: false )
123
+ // Wait for the async header values.
124
+ await request. setValue ( heartbeatsHeaderValue, forHTTPHeaderField: " X-Firebase-Client " )
125
+ if let tokenResult = await appCheckTokenHeaderValue {
127
126
if let error = tokenResult. error {
128
127
AuthLog . logWarning ( code: " I-AUT000018 " ,
129
128
message: " Error getting App Check token; using placeholder " +
0 commit comments