Niner since 2011
@bdesmet: Thanks for the response, Bart.
Seems like you had to pick between two slightly awkward choices: return a Task<T> and deal with the gaps and differences, or return an IObservable<T> that breaks the abstraction slightly.
In a perfect world, I think Task<T> and IObservable<T> would have the exact same interfaces for the shared concepts that you mentioned. Given that they don't, though, the choice makes sense.
@Maddus Mattus: Did you watch the video? Bart talks about how IObservable<T> and Task<T> live nicely together in the new version of Rx.