public Future<V> schedule(Callable<V> task, long delay, TimeUnit unit)
    {
        if (task == null) throw new NullPointerException();
        RunnableFuture<V> f = newTaskFor(task);
        executor.schedule(new QueueingFuture<>(f, completionQueue), delay, unit);
        return f;
    }
@throws RejectedExecutionException {@inheritDoc}
@throws NullPointerException       {@inheritDoc}
xmppserver/src/main/java/org/jivesoftware/util/ScheduledExecutorCompletionService.java