AsyncFuture<Boolean> (@NotNull final Processor<? super T> consumer) { final AsyncFutureResult<Boolean> result = AsyncFutureFactory.getInstance().createAsyncFutureResult(); AsyncFuture<Boolean> fq = myQuery1.forEachAsync(consumer); fq.addConsumer(SameThreadExecutor.INSTANCE, new DefaultResultConsumer<>(result) { @Override public void onSuccess(Boolean value) { if (value.booleanValue()) { AsyncFuture<Boolean> fq2 = myQuery2.forEachAsync(consumer); fq2.addConsumer(SameThreadExecutor.INSTANCE, new DefaultResultConsumer<>(result)); } else { result.set(false); } } }); return result; }