I have tried to follow this, but I think that I need a proper walk-through. If the previous `substream.inputsDepleted` then we wait for `primaryInputs.NeedsInput && primaryOutputs.NeedsDemand` before we create the next substream? How does this fit together.