public static <F extends Future<Void>> Mono<Void> from(F future) {
		Objects.requireNonNull(future, "future");
		if (future.isDone()) {
			if (!future.isSuccess()) {
				return Mono.error(FutureSubscription.wrapError(future.cause()));
			}
			return Mono.empty();
		}
		return new ImmediateFutureMono<>(future);
	}
@Test
	void raceTestImmediateFutureMono() {
		for (int i = 0; i < 1000; i++) {
			final TestSubscriber subscriber = new TestSubscriber();
			final ImmediateEventExecutor eventExecutor = ImmediateEventExecutor.INSTANCE;
			final Promise<Void> promise = eventExecutor.newPromise();

			RaceTestUtils.race(() -> FutureMono.from(promise)
			                                   .subscribe(subscriber), subscriber::cancel);

			assertThat(resolveListeners(promise)).isNullOrEmpty();
			assertThat(subscriber.operations).first()
			                                 .isEqualTo(TestSubscriber.Operation.ON_SUBSCRIBE);
		}
	}