code: func (c *remoteConn) findAndSend() error {
  	// Find all proxies that don't have a connection to a remote agent. If all
  	// proxies have connections, return right away.
  	disconnectedProxies, err := c.findDisconnectedProxies()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	if len(disconnectedProxies) == 0 {
  		return nil
  	}
  
  	c.log.Debugf("Proxy %v sending %v discovery request with tunnel ID: %v and disconnected proxies: %v.",
  		c.proxyName, string(c.tunnelType), c.tunnelID, Proxies(disconnectedProxies))
  
  	req := discoveryRequest{
  		TunnelID: c.tunnelID,
  		Type:     string(c.tunnelType),
  		Proxies:  disconnectedProxies,
  	}
  
  	err = c.sendDiscoveryRequests(req)
  	if err != nil {
  		return trace.Wrap(err)
  	}
  
  	return nil
  }
docs: // sendDiscovery requests sends special "Discovery Requests" back to the
  // connected agent. Discovery request consists of the proxies that are part
  // of the cluster, but did not receive the connection from the agent. Agent
  // will act on a discovery request attempting to establish connection to the
  // proxies that were not discovered.