code: func (d *Discovery) initialize(ctx context.Context) {
  	// Loop until we manage to get the local datacenter.
  	for {
  		// We have to check the context at least once. The checks during channel sends
  		// do not guarantee that.
  		select {
  		case <-ctx.Done():
  			return
  		default:
  		}
  
  		// Get the local datacenter first, if necessary.
  		err := d.getDatacenter()
  		if err != nil {
  			time.Sleep(retryInterval)
  			continue
  		}
  		// We are good to go.
  		return
  	}
  }
docs: // Initialize the Discoverer run.