         self.delegate = options.restoreIdentifier == nil ? Delegate(self) : RestorableDelegate(self)
         self.centralManager = CBCentralManager(
             delegate: self.delegate,
-            queue: self.queue,
-            options: options.optionsDictionary
+            queue: queue,
+            options: options.dictionary
         )
+        continuation.scan = Queue<Operation.Scan> { [unowned self] in
+            self.execute($0)
+            return false
+        }
     }
     
     // MARK: - Methods
-    
-    public func wait(for state: DarwinBluetoothState) async throws {
-        
-    }
     
     /// Scans for peripherals that are advertising services.
     public func scan(

            self.restoreIdentifier = restoreIdentifier
        }
        
        internal var optionsDictionary: [String: Any] {
            var options = [String: Any](minimumCapacity: 2)
            if showPowerAlert {
                options[CBCentralManagerOptionShowPowerAlertKey] = showPowerAlert as NSNumber

            // cache value
            self.central.cache.peripherals[peripheral] = corePeripheral
            // yield value to stream
            guard let operation = self.central.continuation.scan.current else {
                assertionFailure("Not currently scanning")
                return
            }
            operation.continuation.yield(scanResult)
        }
        
        #if os(iOS)
