@UnstableApi
    static ListenableHealthChecker of(Supplier<? extends CompletionStage<HealthCheckStatus>> healthChecker,
                                      Duration fallbackTtl, EventExecutor eventExecutor) {
        requireNonNull(fallbackTtl, "fallbackTtl");
        checkArgument(!fallbackTtl.isNegative() && !fallbackTtl.isZero(), "fallbackTtl: %s (expected: > 0)",
                      fallbackTtl);
        return new ScheduledHealthChecker(requireNonNull(healthChecker, "healthChecker"),
                                          fallbackTtl,
                                          requireNonNull(eventExecutor, "eventExecutor"));
    }
Returns a newly created {@link ListenableHealthChecker} that invokes the specified health checker
function repetitively on the specified {@link EventExecutor}.

@param healthChecker A {@link Supplier} that performs a health check asynchronously and
                     returns a future that will complete with a {@link HealthCheckStatus}.
                     {@link HealthCheckStatus#ttlMillis()} determines the delay before the
                     next health check. If the future completed exceptionally, the specified
                     {@code fallbackTtl} will be used instead to determine the delay.
                     {@link Supplier} should avoid returning null or throwing exception.
                     The {@link CompletionStage} from {@link Supplier} should avoid completing
                     with null result or failing.
@param fallbackTtl   The amount of delay between each health check if the previous health
                     check failed unexpectedly so it's not possible to determine how long
                     we have to wait until the next health check.
@param eventExecutor The {@link EventExecutor} that will invoke the specified {@code healthChecker}.
core/src/main/java/com/linecorp/armeria/server/healthcheck/HealthChecker.java