Subject is a pretty fundamental class, in the RxJS implementation. Shoving the notion of an initial value into to along with an accessor for that value (which might or might not exist) — to replicate the functionality of
BehaviorSubject — along with the notion of a (potentially time-based buffer) — to replicate the functionality of
ReplaySubject — would only make the
Subject implementation larger and slower.