@Test
    void endpointsIsSetBeforeHealthCheckedEndpointGroupIsCreated() {
        final ServerEndpointGroup serverEndpointGroup = new ServerEndpointGroup();
        final EndpointGroup orElse =
                serverEndpointGroup.orElse(EndpointGroup.of(Endpoint.of("unused.com", 8081)));
        serverEndpointGroup.setEndpoint(ImmutableList.of(Endpoint.of("127.0.0.1", server.httpPort())));

        final HealthCheckedEndpointGroup healthCheckedEndpointGroup =
                HealthCheckedEndpointGroup.of(orElse, "/health");
        final WebClient client = WebClient.of(SessionProtocol.HTTP, healthCheckedEndpointGroup);
        await().atMost(2, TimeUnit.SECONDS).until(() -> !healthCheckedEndpointGroup.endpoints().isEmpty());
        assertThat(client.get("/").aggregate().join().status()).isSameAs(HttpStatus.OK);
    }
When {@link EndpointGroup#orElse(EndpointGroup)} is used and the endpoint group is wrapped by
{@link HealthCheckedEndpointGroup}, there was a chance that endpoints are not set forever
before https://github.com/line/armeria/pull/3181 is merged.
It happens when:
- {@link EndpointGroup#whenReady()} is completed with the second endpoint group.
- The endpoint group of the  first {@link EndpointGroup} are set.
- {@link HealthCheckedEndpointGroup} is created.
In this case, the health check requests are sent to the second {@link EndpointGroup} to filter
unhealthy endpoints. However, because {@link EndpointGroup#endpoints()} returns the endpoint
group in the first {@link EndpointGroup}, there's always no matching.
core/src/test/java/com/linecorp/armeria/client/endpoint/healthcheck/HealthCheckEndpointGroupRaceTest.java