public Future<?> scheduleWithFixedDelay(Runnable task, long initialDelay, long delay, TimeUnit unit) {
        Preconditions.checkState(isOpen.get(), "CloseableExecutorService is closed");

        ScheduledFuture<?> scheduledFuture =
                scheduledExecutorService.scheduleWithFixedDelay(task, initialDelay, delay, unit);
        return new InternalScheduledFutureTask(scheduledFuture);
    }
@Test
    public void testCloseableScheduleWithFixedDelay() throws InterruptedException {
        CloseableScheduledExecutorService service = new CloseableScheduledExecutorService(executorService);

        final CountDownLatch latch = new CountDownLatch(QTY);
        service.scheduleWithFixedDelay(
                new Runnable() {
                    @Override
                    public void run() {
                        latch.countDown();
                    }
                },
                DELAY_MS,
                DELAY_MS,
                TimeUnit.MILLISECONDS);

        assertTrue(latch.await((QTY * 2) * DELAY_MS, TimeUnit.MILLISECONDS));
    }