     ) async throws {
         return try await withCheckedThrowingContinuation { [weak self] continuation in
             guard let self = self else { return }
-            self.queue.async {
+            self.async {
                 let peripheral = characteristic.peripheral
                 // get peripheral
                 guard let peripheralObject = self.cache.peripherals[peripheral] else {

        let serviceUUIDs = services.isEmpty ? nil : services.map { CBUUID($0) }
        return try await withCheckedThrowingContinuation { [weak self] continuation in
            guard let self = self else { return }
            self.queue.async {
                let peripheral = service.peripheral
                // get peripheral
                guard let peripheralObject = self.cache.peripherals[peripheral] else {

    public func rssi(for peripheral: Peripheral) async throws -> RSSI {
        return try await withCheckedThrowingContinuation { [weak self] continuation in
            guard let self = self else { return }
            self.async {
                // get peripheral
                guard let peripheralObject = self.cache.peripherals[peripheral] else {
                    continuation.resume(throwing: CentralError.unknownPeripheral)
