getResponse(); // Safety check for Guzzle < 7.0 if (!$response) { return $ex; } /** @see \GuzzleHttp\Exception\RequestException::create() */ if (preg_match('/^(.+: `.+ .+` resulted in a `.+ .+` response):\n/U', $ex->getMessage(), $match)) { $message = $match[1]; $body = $response->getBody(); if (!$body->isSeekable() || !$body->isReadable()) { return $ex; } $summary = $body->getContents(); $body->rewind(); if ($summary !== '') { $message .= ":\n{$summary}\n"; //return new $ex($message, $ex->getRequest(), $ex->getResponse(), $ex, $ex->getHandlerContext()); // Better: modify internal message inside original exception object (preserves the stack trace) (new class() extends \Exception { public static function overwriteProtectedMessage(\Exception $ex, $message) { $ex->message = $message; } })::overwriteProtectedMessage($ex, $message); } } return $ex; } }