code: func (rtm *RTM) handleAck(event json.RawMessage) {
  	ack := &AckMessage{}
  	if err := json.Unmarshal(event, ack); err != nil {
  		rtm.Debugln("RTM Error unmarshalling 'ack' event:", err)
  		rtm.Debugln(" -> Erroneous 'ack' event:", string(event))
  		return
  	}
  
  	if ack.Ok {
  		rtm.IncomingEvents <- RTMEvent{"ack", ack}
  	} else if ack.RTMResponse.Error != nil {
  		// As there is no documentation for RTM error-codes, this
  		// identification of a rate-limit warning is very brittle.
  		if ack.RTMResponse.Error.Code == -1 && ack.RTMResponse.Error.Msg == "slow down, too many messages..." {
  			rtm.IncomingEvents <- RTMEvent{"ack_error", &RateLimitEvent{}}
  		} else {
  			rtm.IncomingEvents <- RTMEvent{"ack_error", &AckErrorEvent{ack.Error}}
  		}
  	} else {
  		rtm.IncomingEvents <- RTMEvent{"ack_error", &AckErrorEvent{fmt.Errorf("ack decode failure")}}
  	}
  }
docs: // handleAck handles an incoming 'ACK' message.