public FlowableHttpClient determineHttpClient() {
        if (httpClient != null) {
            return httpClient;
        } else if (isApacheHttpComponentsPresent) {
            // Backwards compatibility, if apache HTTP Components is present then it has priority
            this.httpClient = new ApacheHttpComponentsFlowableHttpClient(this);
            return this.httpClient;
        } else if (isSpringWebClientPresent && isReactorHttpClientPresent) {
            this.httpClient = new SpringWebClientFlowableHttpClient(this);
            return httpClient;
        } else if (isApacheHttpComponents5Present) {
            ApacheHttpComponents5FlowableHttpClient httpClient = new ApacheHttpComponents5FlowableHttpClient(this);
            this.httpClient = httpClient;
            this.closeRunnable = httpClient::close;
            return this.httpClient;
        }
        else {
            throw new FlowableException("Failed to determine FlowableHttpClient");
        }
    }
@Test
    void determineHttpClientWhenNotSet() {
        HttpClientConfig config = new HttpClientConfig();

        assertThat(config.determineHttpClient()).isInstanceOf(ApacheHttpComponentsFlowableHttpClient.class);
    }