code: func (conn *Conn) runLoop() {
  	defer conn.wg.Done()
  	for {
  		select {
  		case line := <-conn.in:
  			conn.dispatch(line)
  		case <-conn.die:
  			// control channel closed, bail out
  			return
  		}
  	}
  }
docs: // runLoop is started as a goroutine after a connection is established.
  // It pulls Lines from the input channel and dispatches them to any
  // handlers that have been registered for that IRC verb.