@@ -0,0 +1,1221 @@
+package com.github.davidmoten.rx;%0A%0Aimport java.util.concurrent.TimeUnit;%0A%0Aimport rx.Scheduler;%0Aimport rx.Subscription;%0Aimport rx.functions.Action0;%0A%0Apublic class AdaptiveScheduler extends Scheduler %7B%0A%0A    private final Scheduler scheduler;%0A%0A    private AdaptiveScheduler(Scheduler scheduler) %7B%0A        this.scheduler = scheduler;%0A    %7D%0A    %0A    public static AdaptiveScheduler createAdaptiveScheduler(Scheduler scheduler) %7B%0A        return new AdaptiveScheduler(scheduler);%0A    %7D%0A%0A    @Override%0A    public Worker createWorker() %7B%0A        final Worker worker = scheduler.createWorker();%0A        return new Worker() %7B%0A%0A            @Override%0A            public void unsubscribe() %7B%0A                worker.unsubscribe();%0A            %7D%0A%0A            @Override%0A            public boolean isUnsubscribed() %7B%0A                return worker.isUnsubscribed();%0A            %7D%0A%0A            @Override%0A            public Subscription schedule(Action0 action) %7B%0A                return worker.schedule(action);%0A            %7D%0A%0A            @Override%0A            public Subscription schedule(Action0 action, long delayTime, TimeUnit unit) %7B%0A                return worker.schedule(action, delayTime, unit);%0A            %7D%0A        %7D;%0A    %7D%0A    %0A%7D%0A

add AdaptiveScheduler - draft