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

    
    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)
            self.readOperations.append(readOperation)
        }
        

// MARK: - PERIPHERAL MANAGER DELEGATE METHODS

extension Clink: CBPeripheralDelegate {
    public final func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService]) {
        peripheral.discoverServices([self.service.uuid])
    }
