@Nonnull
	public static CompletableFuture<Void> allOf(@Nonnull CompletableFuture<?>... futures) {
		AtomicBoolean thrown = new AtomicBoolean();
		CompletableFuture<Void> allOf = CompletableFuture.allOf(futures);
		for (CompletableFuture<?> f : futures) {
			f.exceptionally(t -> {
				if (thrown.compareAndSet(false, true)) {
					for (CompletableFuture<?> f1 : futures) {
						f1.completeExceptionally(t);
					}
					allOf.completeExceptionally(t);
				}
				return null;
			});
		}
		return allOf;
	}
@param futures
		All futures to create a wrapper future of.

@return Wrapper for all futures.
recaf-core/src/main/java/software/coley/recaf/util/threading/ThreadUtil.java