We noticed a weird issue that is happening to some users. When we present the paywall we are using the loaded offerings and if they are not loaded we wait for them to be refreshed.
In our code we first fetch customerInfo and then the offerings. By looking at the logs from one of our users call to the customerInfo() never seems to end - it doesn’t return nor throw an error.
public func refreshData() async throws {
logger.log("Refresh data")
try await refreshCustomerInfo()
try await refreshProducts()
}inside the refreshCustomerInfo() we are logging everything but only Begin refreshing customer info seems to be included in the logs.
public func refreshCustomerInfo() async throws {
logger.log("Begin refreshing customer info")
do {
customerInfo = try await purchases.customerInfo()
logger.log("Refreshing customer info succeeded. Bought: \(purchased)")
} catch let error {
logger.error("Refreshing customer info failed", error)
throw PurchaseError(error as? ErrorCode) ?? error
}
}Apart from `Begin refreshing customer info` doesn’t seem to be called since the offerings are not refreshed either. Here a screenshot of the filtered logs:

I guess one workaround for now is to move products refresh before the customer info. Looks like when the offerings are fetched but customer info fails for some reason we will be able to show the available products but when user wants to purchase it they will need to sign in to their Apple ID.
What might be causing this weird issue with customer info not being fetched correctly? Why no error is thrown? I guess there is some kind of timeout for this request? We’re currently using 5.32 but will upgrade to the latest version. Didn’t see any mentions of `customerInfo` in the release notes on github though.
