code: func (c *xmppGcmClient) retryMessage(cm CcsMessage, h MessageHandler) {
  	c.messages.RLock()
  	defer c.messages.RUnlock()
  	if me, ok := c.messages.m[cm.MessageId]; ok {
  		if me.backoff.sendAnother() {
  			go func(m *messageLogEntry) {
  				m.backoff.wait()
  				c.send(*m.body)
  			}(me)
  		} else {
  			debug("Exponential backoff failed over limit for message: ", me)
  			go h(cm)
  		}
  	}
  }
docs: // Retry sending a message with exponential backoff; if over limit, bubble up the failed message.