         case let .error(error):
             
             log?("Could not exchange MTU: \(error)")
-            self.connection = nil
             
         case let .value(pdu):
             

    internal private(set) var indications = [UInt16: Notification]()
    
    // MARK: - Initialization
    
    deinit {
        
        self.connection?.unregisterAll()
        self.connection = nil
    }
    
    public init(socket: L2CAPSocketProtocol,
                maximumTransmissionUnit: ATT.MaximumTransmissionUnit = .default,

    private func registerATTHandlers() {
        
        // value notifications / indications
        connection.register { [weak self] in self?.notification($0) }
        connection.register { [weak self] in self?.indication($0) }
    }
    
    @inline(__always)
    private func send <Request: ATTProtocolDataUnit, Response> (_ request: Request, response: @escaping (ATTResponse<Response>) -> ()) {
        
        let log = self.log
        
