private void validateResponse(HTTPResponse response) {
   HTTPStatus status = response.status();
   if (status.code >= HTTPStatus.OK.code && status.code <= 300) return;
   try {
     if (status == HTTPStatus.BAD_REQUEST) {
       ValidationErrorResponse validationErrorResponse =
           JSON.fromJSON(ValidationErrorResponse.class, response.text());
       throw new RemoteServiceException(
           "failed to validate, message="
               + validationErrorResponse.message
               + ", fieldErrors="
               + validationErrorResponse.fieldErrors);
     } else {
       ErrorResponse errorResponse = JSON.fromJSON(ErrorResponse.class, response.text());
       throw new RemoteServiceException(errorResponse.message);
     }
   } catch (RemoteServiceException e) {
     throw e;
   } catch (Exception e) {
     logger.warn(
         "failed to decode response, statusCode={}, responseText={}",
         status.code,
         response.text(),
         e);
     throw new RemoteServiceException(
         "received non 2xx status code, status="
             + status.code
             + ", remoteMessage="
             + response.text(),
         e);
   }
 }