code: 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);
      }
docs: Creates and executes a periodic action that becomes enabled first
  after the given initial delay, and subsequently with the
  given delay between the termination of one execution and the
  commencement of the next.  If any execution of the task
  encounters an exception, subsequent executions are suppressed.
  Otherwise, the task will only terminate via cancellation or
  termination of the executor.
  
  @param task      the task to execute
  @param initialDelay the time to delay first execution
  @param delay        the delay between the termination of one
  execution and the commencement of the next
  @param unit         the time unit of the initialDelay and delay parameters
  @return a Future representing pending completion of
  the task, and whose <tt>get()</tt> method will throw an
  exception upon cancellation