             self.central.continuation.discoverCharacteristics[peripheral] = nil
         }
         
+        @objc(peripheral:didUpdateValueForCharacteristic:error:)
         func peripheral(
             _ peripheralObject: CBPeripheral,
             didUpdateValueFor characteristicObject: CBCharacteristic,
             error: Error?
         ) {
             
-            log(peripheralObject.gattIdentifier.uuidString, characteristicObject.uuid.uuidString, error?.localizedDescription)
+            if let error = error {
+                log("Peripheral \(peripheralObject.gattIdentifier.uuidString) failed reading characteristic (\(error))")
+            } else {
+                log("Peripheral \(peripheralObject.gattIdentifier.uuidString) did update value for characteristic \(characteristicObject.uuid.uuidString)")
+            }
             
             let data = characteristicObject.value ?? Data()
             let characteristic = Characteristic(

            self.central.continuation.connect[peripheral] = nil
        }
        
        func centralManager(
            _ centralManager: CBCentralManager,
            didFailToConnect corePeripheral: CBPeripheral,
            error: Swift.Error?
        ) {
            log(corePeripheral.gattIdentifier.uuidString, error?.localizedDescription ?? "")
            assert(self.central != nil)
            assert(self.central?.centralManager === centralManager)
            let peripheral = Peripheral(corePeripheral)
            guard let continuation = self.central.continuation.connect[peripheral] else {
                assertionFailure("Missing continuation")

        ) {
            assert(self.central != nil)
            assert(self.central?.centralManager === centralManager)
            if corePeripheral.delegate == nil {
                corePeripheral.delegate = self
            }
            let peripheral = Peripheral(corePeripheral)
            let advertisement = Advertisement(advertisementData)
            let scanResult = ScanData(
