Perhaps I need to do more research on the new Task APIs, but I didn't quite understand why we would use a TaskCompletionSource<T> instead of using the EAP functionality directly.  Is it because the Task APIs give us better tooling/functionality than EAP?