I can’t say that I fully grasp all of this, but it appears that this is the way to do asynchronous programming going forward with .NET 4.0.
The IObservable/IObserver interfaces are in .NET framework 4.0. I want to stress that IObservable is the new asynchronous programming pattern in .NET. It supplants the Begin/EndInvoke pattern as well as the event-based asynchronous pattern. Simple run of thumb: if the method is asynchronous, return an IObservable.