class ComputationTaskInvoker {

    public Observable<O> recompute() {
        return Observable.create(subscriber -> {
            waitingObservers.add(subscriber);
            worker.schedule(this::drain);
        });
    }

    public  ComputationTaskInvoker(Observable<O> computation, Scheduler scheduler);

}