code: public static <A> IO<A> externallyManaged(Supplier<CompletableFuture<A>> supplier) {
          return new IO<A>() {
              @Override
              public A unsafePerformIO() {
                  return checked(() -> unsafePerformAsyncIO().get()).get();
              }
  
              @Override
              public CompletableFuture<A> unsafePerformAsyncIO(Executor executor) {
                  return supplier.get();
              }
          };
      }
docs: Static factory method for creating an {@link IO} from an externally managed source of
  {@link CompletableFuture completable futures}.
  <p>
  Note that constructing an {@link IO} this way results in no intermediate futures being constructed by either
  {@link IO#unsafePerformAsyncIO()} or {@link IO#unsafePerformAsyncIO(Executor)}, and {@link IO#unsafePerformIO()}
  is synonymous with invoking {@link CompletableFuture#get()} on the externally managed future.
  
  @param supplier the source of externally managed {@link CompletableFuture completable futures}
  @param <A>      the result type
  @return the {@link IO}