                 
                 self.notifyQueue.removeFirst()
                 
-                self.notify(pendingNotification.data, for: pendingNotification.characteristic)
+                self.queue.asyncAfter(deadline: .now(), execute: { [weak self] in
+                    
+                    self?.notify(pendingNotification.data, for: pendingNotification.characteristic)
+                })
             }
         }
     }

            internalManager.respond(to: requests[0], withResult: .success)
        }
        
        @objc
        public func peripheralManager(_ peripheral: CBPeripheralManager, central: CBCentral, didSubscribeTo characteristic: CBCharacteristic) {
            
            log?("Central \(central.gattIdentifier) did subscribe to \(characteristic.uuid)")

            stateChanged(state)
        }
        
        #if swift(>=3.2) // Only with Xcode 9 SDK
        @objc(peripheralManager:willRestoreState:)
        public func peripheralManager(_ peripheral: CBPeripheralManager, willRestoreState state: [String : Any]) {
            
            log?("Will restore state \(state)")
        }
        #endif
        
        @objc(peripheralManagerDidStartAdvertising:error:)
        public func peripheralManagerDidStartAdvertising(_ peripheral: CBPeripheralManager, error: Error?) {
