code: func (p *Plugin) etcdReconnectionLoop(clientCfg *ClientConfig) {
  	var err error
  	// Set reconnect interval
  	interval := p.config.ReconnectInterval
  	if interval == 0 {
  		interval = defaultReconnectInterval
  	}
  	p.Log.Infof("ETCD server %s not reachable in init phase. Agent will continue to try to connect every %d second(s)",
  		p.config.Endpoints, interval)
  	for {
  		time.Sleep(interval)
  
  		p.Log.Infof("Connecting to ETCD %v ...", p.config.Endpoints)
  		p.connection, err = NewEtcdConnectionWithBytes(*clientCfg, p.Log)
  		if err != nil {
  			continue
  		}
  		p.setupPostInitConnection()
  		return
  	}
  }
docs: // Method starts loop which attempt to connect to the ETCD. If successful, send signal callback with resync,
  // which will be started when datasync confirms successful registration