code: func (c *Chain) Conn(opts ...ChainOption) (conn net.Conn, err error) {
  	options := &ChainOptions{}
  	for _, opt := range opts {
  		opt(options)
  	}
  
  	retries := 1
  	if c != nil && c.Retries > 0 {
  		retries = c.Retries
  	}
  	if options.Retries > 0 {
  		retries = options.Retries
  	}
  
  	for i := 0; i < retries; i++ {
  		var route *Chain
  		route, err = c.selectRoute()
  		if err != nil {
  			continue
  		}
  		conn, err = route.getConn()
  		if err == nil {
  			break
  		}
  	}
  	return
  }
docs: // Conn obtains a handshaked connection to the last node of the chain.