@NotNull
  public AsyncResult<T> doWhenDone(@NotNull final Consumer<? super T> consumer) {
    doWhenDone(() -> consumer.consume(myResult));
    return this;
  }
@NotNull
  public AsyncResult<T> doWhenDone(@NotNull final Consumer<? super T> consumer)