message.go
func (m *Message) Requeue(timeout time.Duration) {
	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 <- Req{MessageID: m.ID, Timeout: timeout}
	m.cmdChan = nil
}
func (m *Message) Requeue(timeout time.Duration) {
	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 <- Req{MessageID: m.ID, Timeout: timeout}
	m.cmdChan = nil
}
// Requeue must be called on messages received from a consumer to let the NSQ
// server know that the message could not be proessed and should be retried.
// The timeout is the amount of time the NSQ server waits before offering this
// message again to its consumers.
//
// One of Finish or Requeue should be called on every message, and the methods
// will panic if they are called more than once.