public ArmeriaRetrofitBuilder nonBaseClientFactory(
            BiFunction<? super SessionProtocol, ? super Endpoint, ? extends WebClient> nonBaseClientFactory) {
        this.nonBaseClientFactory = requireNonNull(nonBaseClientFactory, "nonBaseClientFactory");
        return this;
    }
Specifies the {@link BiFunction} that creates a new non-base {@link WebClient}, which is used for
sending requests to other authorities than that of base URL. If not specified, the non-base
{@link WebClient} will have the same options with the base {@link WebClient}, which was specified
with {@link ArmeriaRetrofit#of(WebClient)} or {@link ArmeriaRetrofit#builder(WebClient)}.

<p>To avoid the overhead of repetitive instantiation of {@link WebClient}s, the {@link WebClient}s
returned by the specified {@link BiFunction} will be cached for each combination of:
<ul>
  <li>Whether the connection is secured (HTTPS or HTTPS)</li>
  <li>Host name</li>
  <li>Port number</li>
</ul>

<p>You can use this method to create a customized non-base {@link WebClient}, for example to send
an additional header, override the timeout or enforce HTTP/1:
<pre>{@code
ArmeriaRetrofit.builder("http://example.com/")
               .nonBaseClientFactory((protocol, endpoint) -> {
                   // Enforce HTTP/1.
                   final SessionProtocol actualProtocol =
                           protocol.isTls() ? SessionProtocol.H1 : SessionProtocol.H1C;

                   return WebClient.builder(actualProtocol, endpoint)
                                   // Derive most settings from 'defaultWebClient'.
                                   .factory(defaultWebClient.factory())
                                   .options(defaultWebClient.options())
                                   // Set a custom header.
                                   .setHeader(HttpHeaderNames.AUTHORIZATION,
                                              "bearer my-access-token")
                                   // Override the timeout.
                                   .responseTimeout(Duration.ofSeconds(30))
                                   .build();
               })
               .build();
}</pre>

<p>Note that the specified {@link BiFunction} is not used for sending requests to the base URL's
authority. The default {@link WebClient} specified with {@link ArmeriaRetrofit#of(WebClient)} or
{@link ArmeriaRetrofit#builder(WebClient)} will be used instead for such requests:
<pre>{@code
// No need to use 'nonBaseClientFactory()' method.
ArmeriaRetrofit.of(WebClient.builder("http://example.com/")
                            .setHeader(HttpHeaderNames.AUTHORIZATION,
                                       "bearer my-access-token")
                            .build());
}</pre>
retrofit2/src/main/java/com/linecorp/armeria/client/retrofit2/ArmeriaRetrofitBuilder.java