class DefaultAutoRetryStrategyProvider implements AutoRetryStrategyProvider {

    @Override
    public AutoRetryStrategy newStrategy(final Publisher<Object> lbEventStream, final Completable sdStatus) {
        if (!waitForLb && !retryAllRetryableExceptions) {
            return (count, cause) -> failed(cause);
        }
        return new DefaultAutoRetryStrategy(maxRetryCount, waitForLb, retryAllRetryableExceptions,
                lbEventStream, ignoreSdErrors ? null : sdStatus);
    }

    private  DefaultAutoRetryStrategyProvider(final int maxRetryCount, final boolean waitForLb,
                                             final boolean ignoreSdErrors,
                                             final boolean retryAllRetryableExceptions);

}