public WorkerTask<I, P, R> observeResult(final LifecycleOwner owner, final Consumer<R> observer, final Consumer<Throwable> error) {
        return observe(owner, event -> {
            if (event.type == WorkerTaskEventType.RESULT) {
                observer.accept(event.result);
                event.task.finish();
            } else if (event.type == WorkerTaskEventType.ERROR && error != null) {
                error.accept(event.exception);
            }
        });
    }
registers an observer for a result. Task is auto-finished after result is received
main/src/main/java/cgeo/geocaching/utils/workertask/WorkerTask.java