public async Task <GetBasketResponse> GetContents(Guid sessionId) { var policy = _pollyPolicyProvider.BasketStorePolicy(); var result = await policy.ExecuteAndCaptureAsync(async() => { var items = await _basketStore.GetAll(sessionId); return(items.Select(model => new BasketItem { ProductId = model.ProductId.ToString(), Quantity = model.Quantity }).ToList()); }); if (result.Outcome == OutcomeType.Failure) { //LOG var response = new GetBasketResponse(); response.AddError(result.FinalException.Message); return(response); } return(new GetBasketResponse { Items = result.Result }); }