I had a similar discussion with Erik Meijer when he was in Brisbane late last year for an Rx workshop.  I guess a lot of the Rx stuff was created back before we had Task<T> everywhere so IObservable<T> was commonly used even for single results.  These days it does seem a bit unnatural to use the IObservable - to me anyway...  I think the halfsies solution is neat - the Task<T> result pretty much implies that it's async anyway.