         var didDisconnect: AsyncStream<Peripheral>.Continuation!
         var state: AsyncStream<DarwinBluetoothState>.Continuation!
         var scan: AsyncThrowingStream<ScanData<Peripheral, Advertisement>, Error>.Continuation?
-        var connect = [Peripheral: CheckedContinuation<(), Error>]()
-        var discoverServices = [Peripheral: CheckedContinuation<[Service<Peripheral, AttributeID>], Error>]()
-        var discoverIncludedServices = [Service<Peripheral, AttributeID>: CheckedContinuation<[Service<Peripheral, AttributeID>], Error>]()
-        var discoverCharacteristics = [Peripheral: CheckedContinuation<[Characteristic<Peripheral, AttributeID>], Error>]()
-        var discoverDescriptors = [Peripheral: CheckedContinuation<[Descriptor<Peripheral, AttributeID>], Error>]()
-        var readCharacteristic = [Characteristic<Peripheral, AttributeID>: CheckedContinuation<Data, Error>]()
-        var readDescriptor = [Descriptor<Peripheral, AttributeID>: CheckedContinuation<Data, Error>]()
-        var writeCharacteristic = [Characteristic<Peripheral, AttributeID>: CheckedContinuation<(), Error>]()
-        var writeDescriptor = [Descriptor<Peripheral, AttributeID>: CheckedContinuation<(), Error>]()
-        var isReadyToWriteWithoutResponse = [Peripheral: CheckedContinuation<(), Error>]()
+        var connect = [Peripheral: PeripheralContinuation<(), Error>]()
+        var discoverServices = [Peripheral: PeripheralContinuation<[Service<Peripheral, AttributeID>], Error>]()
+        var discoverIncludedServices = [Service<Peripheral, AttributeID>: PeripheralContinuation<[Service<Peripheral, AttributeID>], Error>]()
+        var discoverCharacteristics = [Peripheral: PeripheralContinuation<[Characteristic<Peripheral, AttributeID>], Error>]()
+        var discoverDescriptors = [Peripheral: PeripheralContinuation<[Descriptor<Peripheral, AttributeID>], Error>]()
+        var readCharacteristic = [Characteristic<Peripheral, AttributeID>: PeripheralContinuation<Data, Error>]()
+        var readDescriptor = [Descriptor<Peripheral, AttributeID>: PeripheralContinuation<Data, Error>]()
+        var writeCharacteristic = [Characteristic<Peripheral, AttributeID>: PeripheralContinuation<(), Error>]()
+        var writeDescriptor = [Descriptor<Peripheral, AttributeID>: PeripheralContinuation<(), Error>]()
+        var isReadyToWriteWithoutResponse = [Peripheral: PeripheralContinuation<(), Error>]()
         var notificationStream = [Characteristic<Peripheral, AttributeID>: AsyncThrowingStream<Data, Error>.Continuation]()
-        var stopNotification = [Characteristic<Peripheral, AttributeID>: CheckedContinuation<(), Error>]()
-        var readRSSI = [Peripheral: CheckedContinuation<RSSI, Error>]()
+        var stopNotification = [Characteristic<Peripheral, AttributeID>: PeripheralContinuation<(), Error>]()
+        var readRSSI = [Peripheral: PeripheralContinuation<RSSI, Error>]()
     }
     
     struct Semaphore {

    private func canSendWriteWithoutResponse(
        for peripheral: Peripheral
    ) async throws -> Bool {
        return try await withCheckedThrowingContinuation { [weak self] continuation in
            guard let self = self else { return }
            self.async {
                // get peripheral

    private func waitUntilCanSendWriteWithoutResponse(
        for peripheral: Peripheral
    ) async throws {
        return try await withThrowingContinuation(for: peripheral) { [weak self] continuation in
            guard let self = self else { return }
            self.async {
                // get peripheral
