Have you tried to keep the other output completely separate instead? This would mean leaving primaryOutputs alone, adding otherOutputs, handling the subscription of `other` directly (i.e. without going through the exposedPublisher) and changing this line to

~~~scala
lazy val needsBothInputAndDemand = primaryInputs.NeedsInput && primaryOutputs.NeedsDemand && otherOutputs.NeedsDemand
~~~