Why did you use Task.Factory.StartNew and call the query.Execute() instead of using Task.Factory.FromAsync and calling ExecuteAsync().  Wouldn't this perform better and look pretty much identical?  Thanks.