in client.go [279:294]
func (c *Connection) SendMessage(msg *acpb.MessageBody) error {
var err error
// Retry 4 times.
for i := 1; i <= 5; i++ {
err := c.sendMessage(msg)
if errors.Is(err, ErrResourceExhausted) {
// Start with 250ms sleep, then simply multiply by iteration.
time.Sleep(time.Duration(i*250) * time.Millisecond)
continue
} else if errors.Is(err, ErrMessageTimeout) {
continue
}
return err
}
return err
}