In issue #105 in this comment @jroper discussed the problem: As subscribers
are single use - what do we do if we have a Graph that imports a Subscriber (or Processor) and then we try to run/materialize it more than once? For example, if that Subscriber object got a onComplete() call - which 'run' would it be for?
The obvious answer is to: instead of importing a Subscriber instance we import a means of getting
a Subscriber (and similarly for Processor/Publisher in order to keep the API consistent). Java has a pattern for this, a Supplier. Of course we have a means to produce a Subscriber in the API already the SubscriberBuilder. So we probably want one of these that will attempt to supply a 'fresh' Subscriber each time it is run/materialized, perhaps a `lazy' SubscriberBuilder or as James termed it
SubscriberBuilder ReactiveStreams.lazySubscriberBuilder(Supplier<SubscriberBuilder>)