func (c *Client) initialAdvertise() error {
	var err error
	for attempt := uint(0); attempt < maxAdvertiseFailures; attempt++ {
		err = c.sendAdvertise()
		if err == nil || err == errEphemeralPeer {
			break
		}

		c.tchan.Logger().WithFields(tchannel.ErrField(err)).Info(
			"Hyperbahn client initial registration failure, will retry")

		// Back off for a while.
		sleepFor := fuzzInterval(advertiseRetryInterval * time.Duration(1<<attempt))
		c.sleep(sleepFor)
	}
	return err
}
func (c *Client) initialAdvertise() error {
	var err error
	for attempt := uint(0); attempt < maxAdvertiseFailures; attempt++ {
		err = c.sendAdvertise()
		if err == nil || err == errEphemeralPeer {
			break
		}

		c.tchan.Logger().WithFields(tchannel.ErrField(err)).Info(
			"Hyperbahn client initial registration failure, will retry")

		
		sleepFor := fuzzInterval(advertiseRetryInterval * time.Duration(1<<attempt))
		c.sleep(sleepFor)
	}
	return err
}
func ( c * Client ) initialAdvertise ( ) error { var err error for attempt := uint ( 0 ) ; attempt < maxAdvertiseFailures ; attempt ++ { err = c . sendAdvertise ( ) if err == nil || err == errEphemeralPeer { break } c . tchan . Logger ( ) . WithFields ( tchannel . ErrField ( err ) ) . Info ( " " ) // Back off for a while. sleepFor := fuzzInterval ( advertiseRetryInterval * time . Duration ( 1 << attempt ) ) c . sleep ( sleepFor ) } return err }
// initialAdvertise will do the initial Advertise call to Hyperbahn with additional
// retries on top of the built-in TChannel retries. It will use exponential backoff
// between each of the call attempts.
initialAdvertise will do the initial Advertise call to Hyperbahn with additional retries on top of the built - in TChannel retries . It will use exponential backoff between each of the call attempts .