code: @Contract(pure = true)
  	@NotNull
  	public static <T> Promise<T> delay(@NotNull Promise<T> promise, long delayMillis) {
  		if (delayMillis <= 0) return promise;
  		MaterializedPromise<T> materializedPromise = promise.materialize();
  		return Promise.ofCallback(cb ->
  				getCurrentEventloop().delay(delayMillis, () -> materializedPromise.whenComplete(cb)));
  	}
docs: Delays completion of provided {@code promise} for
  the defined period of time.
  
  @param promise     the {@code Promise} to be delayed
  @param delayMillis delay in millis
  @return completed {@code Promise}