code: func newMux(p packetConn) *mux {
  	m := &mux{
  		conn:             p,
  		incomingChannels: make(chan NewChannel, 16),
  		globalResponses:  make(chan interface{}, 1),
  		incomingRequests: make(chan *Request, 16),
  		errCond:          newCond(),
  	}
  	if debugMux {
  		m.chanList.offset = atomic.AddUint32(&globalOff, 1)
  	}
  
  	go m.loop()
  	return m
  }
docs: // newMux returns a mux that runs over the given connection.