code: public static <T> Flux<T> push(Consumer<? super FluxSink<T>> emitter) {
  		return onAssembly(new FluxCreate<>(emitter, OverflowStrategy.BUFFER, FluxCreate.CreateMode.PUSH_ONLY));
  	}
docs: Programmatically create a {@link Flux} with the capability of emitting multiple
  elements from a single-threaded producer through the {@link FluxSink} API. For
  a multi-threaded capable alternative, see {@link #create(Consumer)}.
  <p>
  <img class="marble" src="doc-files/marbles/push.svg" alt="">
  <p>
  This Flux factory is useful if one wants to adapt some other single-threaded
  multi-valued async API and not worry about cancellation and backpressure (which is
  handled by buffering all signals if the downstream can't keep up).
  <p>
  For example:
  
  <pre><code>
  Flux.&lt;String&gt;push(emitter -&gt; {
  
  ActionListener al = e -&gt; {
  emitter.next(textField.getText());
  };
  // without cleanup support:
  
  button.addActionListener(al);
  
  // with cleanup support:
  
  button.addActionListener(al);
  emitter.onDispose(() -> {
  button.removeListener(al);
  });
  });
  </code></pre>
  
  @reactor.discard The {@link FluxSink} exposed by this operator buffers in case of
  overflow. The buffer is discarded when the main sequence is cancelled.
  
  @param <T> The type of values in the sequence
  @param emitter Consume the {@link FluxSink} provided per-subscriber by Reactor to generate signals.
  @return a {@link Flux}
  @see #create(Consumer)