@UnstableApi
    public SELF selectionTimeoutMillis(long initialSelectionTimeoutMillis, long selectionTimeoutMillis) {
        checkArgument(selectionTimeoutMillis >= 0, "selectionTimeoutMillis: %s (expected: >= 0)",
                      selectionTimeoutMillis);
        checkArgument(initialSelectionTimeoutMillis >= 0, "initialSelectionTimeoutMillis: %s (expected: >= 0)",
                      initialSelectionTimeoutMillis);
        if (initialSelectionTimeoutMillis == 0) {
            initialSelectionTimeoutMillis = Long.MAX_VALUE;
        }
        if (selectionTimeoutMillis == 0) {
            selectionTimeoutMillis = Long.MAX_VALUE;
        }
        this.initialSelectionTimeoutMillis = initialSelectionTimeoutMillis;
        this.selectionTimeoutMillis = selectionTimeoutMillis;
        return self();
    }
Sets the timeouts to wait until a successful {@link Endpoint} selection.
{@code 0} disables the timeout.

<p>The final timeout is calculated by adding the
{@link HealthCheckedEndpointGroup#selectionTimeoutMillis()} and the selection timeout of the delegate
specified when creating this builder.
For example:<pre>{@code
DnsAddressEndpointGroup delegate = DnsAddressEndpointGroup.builder("armeria.dev")
                                                          .selectionTimeoutMillis(3000)
                                                          ...
                                                          .build();
HealthCheckedEndpointGroup endpointGroup =
    HealthCheckedEndpointGroup.builder(delegate, "/health")
                              .selectionTimeoutMillis(10000, 5000)
                              ...
                              .build();
assert endpointGroup.selectionTimeoutMillis() == 13000; // 10000 (health) + 3000 (dns)

// Wait for the initial endpoints.
endpointGroup.whenReady().join();
assert endpointGroup.selectionTimeoutMillis() == 8000;  // 5000 (health) + 3000 (dns)
}</pre>

@param initialSelectionTimeoutMillis the initial selection timeout to wait for the
                               {@linkplain HealthCheckedEndpointGroup#whenReady() initial endpoints}.
                               If unspecified, {@link Flags#defaultResponseTimeoutMillis()} is used by
                               default.
@param selectionTimeoutMillis the selection timeout to wait for an {@link Endpoint} after the initial
                        endpoints are resolved.
                        If unspecified, {@link Flags#defaultConnectTimeoutMillis()}} is used by
                        default.
core/src/main/java/com/linecorp/armeria/client/endpoint/healthcheck/AbstractHealthCheckedEndpointGroupBuilder.java