Transaction failed after success message StoreKit2

When I make a purchase with the Simulated StoreKit Failures, it indicates that the purchase was successful. When I click OK on the alert, only then does the storekit error appear in the console. It seems like it is waiting to verify the transaction until I click 'Okay' in the alert. Why doesn't he do the transaction verification immediately and wait to show the success alert? See video

I take these steps:

  • I make the purchase in the app. This is successful according to StoreKit and you will receive an alert that the purchase was successful.

  • I press 'Okay' in the success alert.
  • When I press "Okay" in the alert I see that the transaction failed because it could not be verified.

So it seems that he only carries out the verification of the transaction as soon as I click away the success alert.

^Failed transaction message

 func purchase(_ product: Product) async throws -> Transaction? {
            print("Transactie gestart.")
            let result = try await product.purchase()
            switch result {
            case .success(let verification):
                print("Transactie doorgezet naar verificatie.")
                let transaction = try checkVerified(verification)
                //The transaction is verified. Deliver content to the user.
                await updateCustomerProductStatus()
                //Always finish a transaction.
                await transaction.finish()
                
                return transaction
            case .userCancelled:
                print("Transactie geannuleerd door de gebruiker.")
                throw StoreError.failedVerification
            case .pending:
                print("Transactie in afwachting van actie door de eindgebruiker.")
                return nil
            default:
                print("Er heeft zich een onbekende fout voorgedaan.")
                throw StoreError.failedVerification
            }
    }
    func checkVerified<T>(_ result: VerificationResult<T>) throws -> T {
        //Check whether the JWS passes StoreKit verification.
        switch result {
        case .unverified:
            print("Transactie mislukt doordat hij niet geverifieerd kon worden.")
            throw StoreError.failedVerification
        case .verified(let safe):
            let _ = print("Transactie is geverifieerd.")
            return safe
        }
    }