message.go
func (m *Message) Finish() {
	if m.Complete() {
		panic("(*Message).Finish or (*Message).Requeue has already been called")
	}
	defer func() { recover() }() // the connection may have been closed asynchronously
	m.cmdChan <- Fin{MessageID: m.ID}
	m.cmdChan = nil
}
func (m *Message) Finish() {
	if m.Complete() {
		panic("(*Message).Finish or (*Message).Requeue has already been called")
	}
	defer func() { recover() }() // the connection may have been closed asynchronously
	m.cmdChan <- Fin{MessageID: m.ID}
	m.cmdChan = nil
}
// Finish must be called on every message received from a consumer to let the
// NSQ server know that the message was successfully processed.
//
// One of Finish or Requeue should be called on every message, and the methods
// will panic if they are called more than once.