code: func (b *Broker) muCloseDeadConnection(conn *connection) {
  	b.mu.Lock()
  	defer b.mu.Unlock()
  
  	for nid, c := range b.conns {
  		if c == conn {
  			b.conf.Logger.Debug("closing dead connection",
  				"nodeID", nid)
  			delete(b.conns, nid)
  			_ = c.Close()
  			if err := b.refreshMetadata(); err != nil {
  				b.conf.Logger.Debug("cannot refresh metadata",
  					"error", err)
  			}
  			return
  		}
  	}
  }
docs: // muCloseDeadConnection is closing and removing any reference to given
  // connection. Because we remove dead connection, additional request to refresh
  // metadata is made
  //
  // muCloseDeadConnection call it protected with broker's lock.