             productData = receivedProductData
 
             let productID = receivedProductData.productIdentifier
-            let foundPresentedOfferingID = self.presentedOfferingIDsByProductID[productID]
+            let foundPresentedOfferingID = self.presentedOfferingIDsByProductID.value[productID]
             presentedOfferingID = foundPresentedOfferingID
 
-            presentedOfferingIDsByProductID.removeValue(forKey: productID)
+            self.presentedOfferingIDsByProductID.modify { $0.removeValue(forKey: productID) }
         }
         let unsyncedAttributes = self.unsyncedAttributes
 

    private let deviceCache: DeviceCache
    private let manageSubscriptionsHelper: ManageSubscriptionsHelper
    private let beginRefundRequestHelper: BeginRefundRequestHelper
    private let lock = NSRecursiveLock()

    // Can't have these properties with `@available`.
    // swiftlint:disable identifier_name

        guard let delegate = delegate else { return false }

        let storeProduct = StoreProduct(sk1Product: product)
        delegate.readyForPromotedProduct(storeProduct) { completion in
            self.purchaseCompleteCallbacksByProductID.modify { $0[product.productIdentifier] = completion }
            storeKitWrapper.add(payment)
        }
        return false
    }

