code: func (s *Server) handleExchangeMTURequest(r ExchangeMTURequest) []byte {
  	// Validate the request.
  	switch {
  	case len(r) != 3:
  		fallthrough
  	case r.ClientRxMTU() < 23:
  		return newErrorResponse(r.AttributeOpcode(), 0x0000, ble.ErrInvalidPDU)
  	}
  
  	txMTU := int(r.ClientRxMTU())
  	s.conn.SetTxMTU(txMTU)
  
  	if txMTU != len(s.txBuf) {
  		// Apply the txMTU afer this response has been sent and before
  		// any other attribute protocol PDU is sent.
  		defer func() {
  			s.txBuf = make([]byte, txMTU, txMTU)
  			<-s.chNotBuf
  			s.chNotBuf <- make([]byte, txMTU, txMTU)
  			<-s.chIndBuf
  			s.chIndBuf <- make([]byte, txMTU, txMTU)
  		}()
  	}
  
  	rsp := ExchangeMTUResponse(s.txBuf)
  	rsp.SetAttributeOpcode()
  	rsp.SetServerRxMTU(uint16(s.rxMTU))
  	return rsp[:3]
  }
docs: // handle MTU Exchange request. [Vol 3, Part F, 3.4.2]