private HttpClient getOrCreateClient(Options options) {
    if (doesClientConfigurationDiffer(options)) {
      // create a new client from the existing one - but with connectTimeout and followRedirect
      // settings from options
      final int clientKey = createClientKey(options);

      SoftReference<HttpClient> requestScopedSoftReference = clients.get(clientKey);
      HttpClient requestScoped =
          requestScopedSoftReference == null ? null : requestScopedSoftReference.get();

      if (requestScoped == null) {
        java.net.http.HttpClient.Builder builder =
            newClientBuilder(options)
                .sslContext(client.sslContext())
                .sslParameters(client.sslParameters())
                .version(client.version());
        client.authenticator().ifPresent(builder::authenticator);
        client.cookieHandler().ifPresent(builder::cookieHandler);
        client.executor().ifPresent(builder::executor);
        client.proxy().ifPresent(builder::proxy);
        requestScoped = builder.build();
        clients.put(clientKey, new SoftReference<>(requestScoped));
      }
      return requestScoped;
    }
    return client;
  }
Creates the new Http2Client using following defaults:

<ul>
  <li>Connect Timeout: 10 seconds, as {@link Request.Options#Options()} uses
  <li>Follow all 3xx redirects
  <li>HTTP 2
</ul>

@see Request.Options#Options()
java11/src/main/java/feign/http2client/Http2Client.java