You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: delivery.go
    path of file: ./repos/rmq
    
    the code of the file until where you have to start completion: package rmq

import (
	"context"
	"fmt"
	"net/http"
	"time"
)

type Delivery interface {
	Payload() string

	Ack() error
	Reject() error
	Push() error
}

var (
	_ Delivery   = &redisDelivery{}
	_ WithHeader = &redisDelivery{}
)

type redisDelivery struct {
	ctx          context.Context
	payload      string
	clearPayload string
	header       http.Header
	unackedKey   string
	rejecte
    
func (delivery *redisDelivery) move(key string) error {
	errorCount := 0
	for {
		_, err := delivery.redisClient.LPush(key, delivery.payload)
		if err == nil { // success
			break
		}
		// error

		errorCount++

		select { // try to add error to channel, but don't block
		case delivery.errChan <- &DeliveryError{Delivery: delivery, RedisErr: err, Count: errorCount}:
		default:
		}

		if err := delivery.ctx.Err(); err != nil {
			return ErrorConsumingStopped
		}

		time.Sleep(time.Second)
	}

	return delivery.Ack()
}