code: func (d *Discovery) watchService(ctx context.Context, ch chan<- []*targetgroup.Group, name string) {
  	srv := &consulService{
  		discovery: d,
  		client:    d.client,
  		name:      name,
  		tags:      d.watchedTags,
  		labels: model.LabelSet{
  			serviceLabel:    model.LabelValue(name),
  			datacenterLabel: model.LabelValue(d.clientDatacenter),
  		},
  		tagSeparator: d.tagSeparator,
  		logger:       d.logger,
  	}
  
  	go func() {
  		ticker := time.NewTicker(d.refreshInterval)
  		var lastIndex uint64
  		catalog := srv.client.Catalog()
  		for {
  			select {
  			case <-ctx.Done():
  				ticker.Stop()
  				return
  			default:
  				srv.watch(ctx, ch, catalog, &lastIndex)
  				<-ticker.C
  			}
  		}
  	}()
  }
docs: // Start watching a service.