public Task <ActionResult> BestProductsManualAsync() { var taskCompletionSource = new TaskCompletionSource <ActionResult>(); var context = new AdventureContext(); context.Products.Take(5).ToListAsync() .ContinueWith(productListTask => { context.Products.CountAsync() .ContinueWith(productsCountTask => { context.Dispose(); taskCompletionSource.SetResult( View("BestProducts", new BestProductsViewModel { Products = productListTask.Result, TotalProductsCount = productsCountTask.Result })); }); }); return(taskCompletionSource.Task); }