         try await fileDescriptor.closeIfThrows {
             try await fileDescriptor.connect(to: destinationSocketAddress, sleep: 10_000_000)
         }
-        return L2CAPSocket(
+        return await L2CAPSocket(
             fileDescriptor: fileDescriptor,
             address: localSocketAddress
         )

        try clientFileDescriptor.closeIfThrows {
            try clientFileDescriptor.setNonblocking()
        }
        return L2CAPSocket(
            fileDescriptor: clientFileDescriptor,
            address: clientAddress
        )

    internal init(
        fileDescriptor: FileDescriptor,
        address: L2CAPSocketAddress
    ) async {
        self.socket = await Socket(fileDescriptor: fileDescriptor)
        self.address = address.address
    }
    
    /// Create a new L2CAP socket with the specified address.
    public init(address: L2CAPSocketAddress) async throws {
        self.socket = try await Socket(fileDescriptor: .l2cap(address, [.closeOnExec, .nonBlocking]))
        self.address = address.address
    }
    
