     
     public final func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
         guard let dataValue = characteristic.value, characteristic.service.uuid.uuidString == clinkServiceId else { return }
-                
+        
         let readOperation: ReadOperation
         
         if let operation = self.readOperations.filter({ $0.characteristic == characteristic && $0.peripheral == peripheral}).first {
             readOperation = operation
         } else {
             readOperation = ReadOperation(peripheral: peripheral, characteristic: characteristic)
+            readOperation.delegate = self
+            
             self.readOperations.append(readOperation)
         }
         

// MARK: - PERIPHERAL MANAGER DELEGATE METHODS

extension Clink: CBPeripheralDelegate {
    public func peripheralManager(_ peripheral: CBPeripheralManager, didAdd service: CBService, error: Error?) {
        if let err = error { print(error) }
    }
    
    public final func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService]) {
        peripheral.discoverServices([self.service.uuid])
    }

        
        resumeWriteOperations()
    }
    
    public final func peripheralManagerIsReady(toUpdateSubscribers peripheral: CBPeripheralManager) {
        resumeWriteOperations()
    }
    
    public final func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
