static Async select()

in util/base/src/main/java/jetbrains/jetpad/base/Asyncs.java [162:188]


  static <SourceT, TargetT> Async<TargetT> select(Async<SourceT> async,
      final Function<? super SourceT, Async<TargetT>> f, final ResolvableAsync<TargetT> resultAsync) {
    async.onResult(new Consumer<SourceT>() {
        @Override
        public void accept(SourceT item) {
          Async<TargetT> async1;
          try {
            async1 = f.apply(item);
          } catch (Exception e) {
            resultAsync.failure(e);
            return;
          }
          if (async1 == null) {
            resultAsync.success(null);
          } else {
            delegate(async1, resultAsync);
          }
        }
      },
      new Consumer<Throwable>() {
        @Override
        public void accept(Throwable throwable) {
          resultAsync.failure(throwable);
        }
      });
    return resultAsync;
  }