Yeah, was pondering about partition as well a while ago, thing is, it doesn't work out nicely without destructuring, e.g.
final s1, s2 = stream.partition(...)
If you yiled a List, then there is the danger of losing type safety, e.g.
final list = stream.partition((event) => event is String);
the List would need to be a List<Stream<dynamic>>
Ultimately, using a new type, like Pair<S, T> could be best, to return a partition result. This object would then have 2 getters which can be typed