func getLatestAuthToken()

in AWSAppSyncClient/Internal/SubscriptionFactory/AppSyncRealTimeClientOIDCAuthProvider.swift [17:57]


    func getLatestAuthToken() -> Swift.Result<String, Error> {
        var jwtToken: String?
        var authError: Error?

        if let asyncAuthProvider = authProvider as? AWSCognitoUserPoolsAuthProviderAsync {
            let semaphore = DispatchSemaphore(value: 0)
            asyncAuthProvider.getLatestAuthToken { (token, error) in
                jwtToken = token
                authError = error
                semaphore.signal()
            }
            semaphore.wait()

            if let error = authError {
                return .failure(error)
            }

            if let token = jwtToken {
                return .success(token)
            }
        }

        if let asyncAuthProvider = authProvider as? AWSOIDCAuthProviderAsync {
            let semaphore = DispatchSemaphore(value: 0)
            asyncAuthProvider.getLatestAuthToken { (token, error) in
                jwtToken = token
                authError = error
                semaphore.signal()
            }
            semaphore.wait()
            if let error = authError {
                return .failure(error)
            }

            if let token = jwtToken {
                return .success(token)
            }
        }

        return .success(authProvider.getLatestAuthToken())
    }