private void handleUniformInterfaceException(UniformInterfaceException exception, URI uri) {
        ClientResponse clientResponse = exception.getResponse();
        if (clientResponse == null) {
            throw new ConductorClientException(
                    String.format("Unable to invoke Conductor API with uri: %s", uri));
        }
        try {
            if (clientResponse.getStatus() < 300) {
                return;
            }
            String errorMessage = clientResponse.getEntity(String.class);
            LOGGER.warn(
                    "Unable to invoke Conductor API with uri: {}, unexpected response from server: statusCode={}, responseBody='{}'.",
                    uri,
                    clientResponse.getStatus(),
                    errorMessage);
            ErrorResponse errorResponse;
            try {
                errorResponse = objectMapper.readValue(errorMessage, ErrorResponse.class);
            } catch (IOException e) {
                throw new ConductorClientException(clientResponse.getStatus(), errorMessage);
            }
            throw new ConductorClientException(clientResponse.getStatus(), errorResponse);
        } catch (ConductorClientException e) {
            throw e;
        } catch (ClientHandlerException e) {
            handleClientHandlerException(e, uri);
        } catch (RuntimeException e) {
            handleRuntimeException(e, uri);
        } finally {
            clientResponse.close();
        }
    }
Uses the {@link PayloadStorage} for downloading large payloads to be used by the client. Gets
the uri of the payload fom the server and then downloads from this location.

@param payloadType the {@link
    com.netflix.conductor.common.utils.ExternalPayloadStorage.PayloadType} to be downloaded
@param path the relative of the payload in external storage
@return the payload object that is stored in external storage
client/src/main/java/com/netflix/conductor/client/http/ClientBase.java