For context to this post, Heres some of us talking about it on Twitter:
This lack of documentation will quickly lead to performance issues being the default for many new to the concept of Reactive programming. An overview of back-pressure in Combine should be written and linked to from this page covering Combine in General:
Demand isn’t even mentioned on this page of Documentation about Subject.
Demand and how it works could be better explained on this page on Subscribers are the source of truth for demand:
The returned value for demand should be documented on these pages:
CurrentValueSubject and PassthroughSubject are implemented with demand unlimited. I assume this is because they must conform to both a publisher as well as a subscriber. This really should be explained in their documentation to prevent people from using them to implement back pressure and sharing the results to other subscribers using .share()
Need some inspiration on how to start documenting the overall subject? Please look at my personal mental model on back pressure here. With many more links of inspiration, for example RxJava’s documentation, are in the post.