code: public static <T> void register(Future<T> future, Consumer<T> consumer) {
          LOGGER.debug("Registering new future {} and consumer {}", future, consumer);
          getFutureContext().add(future, consumer);
      }
docs: Adds new {@code Future} and {@code Consumer} to the context of this
  thread. To resolve this future and invoke the result consumer use method
  {@link resolve()}
  
  @param <T> type of {@code future} and {@code consumer}
  @param future {@code future} that returns argument of type {@code <T>}
  used by {@code consumer}
  @param consumer {@code consumer} of object obtained from {@code future}