public async Task <ActionResult> Index(int manufacturerId = 0) { if (manufacturerId <= 0) { return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "Mandatory argument was not specified")); } var result = new ManufacturerProductsViewModel(); var manufacturerTask = _manufacturerClient.GetManufacturer(manufacturerId); var manufacturerProductsTask = _productClient.GetManufacturerProducts(manufacturerId); await Task.WhenAll(new[] { manufacturerTask, manufacturerProductsTask }); if (manufacturerTask.Result.IsSuccessStatusCode) { result.Manufacturer = await manufacturerTask.Result.Content.ReadAsAsync <ManufacturerViewModel>(); } else { ModelState.AddModelError(string.Empty, _genericErrorMessage); } if (manufacturerProductsTask.Result.IsSuccessStatusCode) { result.Products = (await manufacturerProductsTask.Result.Content.ReadAsAsync <IEnumerable <ProductViewModel> >()).OrderBy(_ => _.Name); } else { ModelState.AddModelError(string.Empty, _genericErrorMessage); } return(View(result)); }