hyperbahn/client.go
func (c *Client) Advertise(otherServices ...tchannel.Registrar) error {
	c.getServiceNames(otherServices)

	if err := c.initialAdvertise(); err != nil {
		return err
	}

	c.opts.Handler.On(Advertised)
	go c.advertiseLoop()
	return nil
}
func (c *Client) Advertise(otherServices ...tchannel.Registrar) error {
	c.getServiceNames(otherServices)

	if err := c.initialAdvertise(); err != nil {
		return err
	}

	c.opts.Handler.On(Advertised)
	go c.advertiseLoop()
	return nil
}
// Advertise advertises the service with Hyperbahn, and returns any errors on initial advertisement.
// Advertise can register multiple services hosted on the same endpoint.
// If the advertisement succeeds, a goroutine is started to re-advertise periodically.