Why wouldn't a user be able to implement a `Subscriber`? Yes they need to think about it (invoke `subscription.request(n)` correctly) but this is not difficult stuff to implement if following the interface.

I think it diminishes this standard if we don't design the types for broad use by all developers, not just "library authors".

Perhaps right now we'll all hide it behind our various library types, but if we truly intend this to become part of a future JDK then these types will be exposed and implemented by many and we should assume this from the start.