protected function blockingPop($queue)
    {
        $rawBody = $this->getConnection()->blpop($queue, $this->blockFor);

        if (! empty($rawBody)) {
            $payload = json_decode($rawBody[1], true);

            $payload['attempts']++;

            $reserved = json_encode($payload);

            $this->getConnection()->zadd(
                $queue.':reserved', [
                $reserved => $this->availableAt($this->retryAfter),
                ]
            );

            return [$rawBody[1], $reserved];
        }

        return [null, null];
    }