Обработка ошибок Guzzle HTTP Laravel

Есть метод, который бежит по массиву урлов и посылает GET запросы на них:

public function updateDetails($page)
{
    $data = [];
    $data['page_id'] = $page->id;

    try {
        Http::retry(3, 100, function ($exception) {
            return $exception instanceof ConnectException;
        })
            ->get($page->url)
            ->throw(function ($response, $e) use (&$data) {
                $data['status_code'] = $response->status();
                $data['response_time'] = $response->transferStats->getTransferTime();
                $data['error'] = $e->getMessage();
            });
    } catch (\GuzzleHttp\Exception\RequestException $exception) {
        $data['status_code'] = 500;
        $data['error'] = $exception->getMessage();
    }
}

Даже при ошибочном запросе нужно засекать время отклика и брать статус-код. Сообщение об ошибке также сохранять. Но вот наткнулся на ошибку, при которой колбек в throw() игнорируется:

"cURL error 0: The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL was unable to rewind the body of the request and subsequent retries resulted in the same error. Turn on the debug option to see what went wrong. See https://bugs.php.net/bug.php?id=47204 for more information. (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://goodwin.com/ex-qui-aperiam-dolorum-culpa-saepe"

RU:

«Ошибка cURL 0: запрос cURL был повторен 3 раза и не удался. Наиболее вероятная причина сбоя заключается в том, что cURL не удалось перемотать тело запроса, и последующие повторные попытки привели к той же ошибке. Включите опцию отладки. чтобы узнать, что пошло не так. Дополнительную информацию см. на https://bugs.php.net/bug.php?id=47204 (см. https://curl.haxx.se/libcurl/c/libcurl-errors.html). для http://goodwin.com/ex-qui-aperiam-dolorum-culpa-saepe"

Как в Guzzle обработать все возможные ошибки и ОБЯЗАТЕЛЬНО засекать время отклика и статус код? Вот ответ, который получаю от запроса на этот урл:

{
"page_id": 2,
"status_code": 500,
"error": "cURL error 0: The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL was unable to rewind the body of the request and subsequent retries resulted in the same error. Turn on the debug option to see what went wrong. See https://bugs.php.net/bug.php?id=47204 for more information. (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://goodwin.com/ex-qui-aperiam-dolorum-culpa-saepe"
}

Ответы (0 шт):