public static <F extends Future<Void>> Mono<Void> deferFuture(Supplier<F> deferredFuture) {
		return new DeferredFutureMono<>(deferredFuture);
	}
@Test
	void raceTestDeferredFutureMonoWithSuccess() {
		for (int i = 0; i < 1000; i++) {
			final TestSubscriber subscriber = new TestSubscriber();
			final ImmediateEventExecutor eventExecutor = ImmediateEventExecutor.INSTANCE;
			final Promise<Void> promise = eventExecutor.newPromise();
			final Supplier<Promise<Void>> promiseSupplier = () -> promise;

			RaceTestUtils.race(() -> FutureMono.deferFuture(promiseSupplier)
			                                   .subscribe(subscriber),
					subscriber::cancel,
					() -> promise.setSuccess(null));

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