Stage state: what to run, how, and where it sits in the line.
@type t() :: %FlowExtra.StageOpts{ function: atom(), module: module(), name: term(), opts: map(), producer_names: [term()], type: :pipe | :error_pipe }