code: func (t *NetTransport) tcpListen(tcpLn *net.TCPListener) {
  	defer t.wg.Done()
  
  	// baseDelay is the initial delay after an AcceptTCP() error before attempting again
  	const baseDelay = 5 * time.Millisecond
  
  	// maxDelay is the maximum delay after an AcceptTCP() error before attempting again.
  	// In the case that tcpListen() is error-looping, it will delay the shutdown check.
  	// Therefore, changes to maxDelay may have an effect on the latency of shutdown.
  	const maxDelay = 1 * time.Second
  
  	var loopDelay time.Duration
  	for {
  		conn, err := tcpLn.AcceptTCP()
  		if err != nil {
  			if s := atomic.LoadInt32(&t.shutdown); s == 1 {
  				break
  			}
  
  			if loopDelay == 0 {
  				loopDelay = baseDelay
  			} else {
  				loopDelay *= 2
  			}
  
  			if loopDelay > maxDelay {
  				loopDelay = maxDelay
  			}
  
  			t.logger.Printf("[ERR] memberlist: Error accepting TCP connection: %v", err)
  			time.Sleep(loopDelay)
  			continue
  		}
  		// No error, reset loop delay
  		loopDelay = 0
  
  		t.streamCh <- conn
  	}
  }
docs: // tcpListen is a long running goroutine that accepts incoming TCP connections
  // and hands them off to the stream channel.