default CompletableFuture<Endpoint> select(ClientRequestContext ctx, ScheduledExecutorService executor) {
        return select(ctx, executor, Flags.defaultConnectTimeoutMillis());
    }
Selects an {@link Endpoint} asynchronously from the {@link EndpointGroup} associated with the specified
{@link ClientRequestContext}, waiting up to the specified {@code timeoutMillis}.

@param ctx the {@link ClientRequestContext} of the {@link Request} being handled.
@param executor the {@link ScheduledExecutorService} used for notifying the {@link CompletableFuture}
                being returned and scheduling timeout tasks.

@return the {@link CompletableFuture} that will be completed with the {@link Endpoint} selected by
        this {@link EndpointSelector}'s selection strategy, or completed with {@code null} if no
        {@link Endpoint} was selected within the specified {@code timeoutMillis}, which can happen
        if the {@link EndpointGroup} is empty.
core/src/main/java/com/linecorp/armeria/client/endpoint/EndpointSelector.java