code: public Eval<V> nextOrNull(final K key) {
          final ValueSubscriber<V> sub = ValueSubscriber.subscriber();
          final LazyImmutable<Boolean> requested = LazyImmutable.def();
          return get(key).peek(a -> a.stream()
                                     .subscribe(sub))
                         .map(a -> Eval.always(() -> {
                             if (requested.isSet()) {
                                 sub.requestOne();
                             } else {
                                 requested.setOnce(true);
                             }
                             final Maybe<V> res = sub.toMaybe();
  
                             return res.orElse(null);
                         }))
  
                         .orElse(Eval.<V> now(null));
      }
docs: Return an Eval that allows retrieval of the next value from the attached pipe when getValue() is called
  
  A value is returned if a value is present, otherwise null is returned if the publisher is complete or an error occurs
  
  <pre>
  {@code
  Queue<String> q = new Queue<>();
  pipes.register("hello", q);
  pipes.push("hello", "world");
  pipes.push("hello", "world2");
  q.close();
  Eval<String> nextValue = pipes.nextOrNull("hello");
  int values = 0;
  while(nextValue.getValue()!=null){
  System.out.println(values++);
  
  }
  
  assertThat(values,equalTo(2));
  
  
  }
  </pre>
  
  
  @param key : Adapter identifier
  @return Eval that can lazily extract the next Value from the Adapter identified by the provided key once triggered