code: func (e *endpoint) Accept() (tcpip.Endpoint, *waiter.Queue, *tcpip.Error) {
  	e.mu.RLock()
  	defer e.mu.RUnlock()
  
  	// Endpoint must be in listen state before it can accept connections.
  	if e.state != stateListen {
  		return nil, nil, tcpip.ErrInvalidEndpointState
  	}
  
  	// Get the new accepted endpoint.
  	var n *endpoint
  	select {
  	case n = <-e.acceptedChan:
  	default:
  		return nil, nil, tcpip.ErrWouldBlock
  	}
  
  	// Start the protocol goroutine.
  	wq := &waiter.Queue{}
  	n.startAcceptedLoop(wq)
  
  	return n, wq, nil
  }
docs: // Accept returns a new endpoint if a peer has established a connection
  // to an endpoint previously set to listen mode.