try {
return runUnlessShutdown(new Callable<ScheduledFuture<?>>() {
public ScheduledFuture<?> call()
{
DiscardableRunnable t = new DiscardableRunnable(command, _unprocessedWork);
try {
return new WrappedScheduledFuture(_current.get().scheduleWithFixedDelay(t, initialDelay, delay, unit), t);
} catch (RuntimeException e) {
t.discard();
throw e;
}
}
});
} catch (Exception e) { throw new RejectedExecutionException(); }