private ServiceResponse SendRequestAsyncTPL(WebRequest request)
{
return _retryPolicy.ExecuteAction<ServiceResponse>(() =>
{
var task = Task.Factory.FromAsync(
request.BeginGetResponse,
asyncResult => request.EndGetResponse(asyncResult),
null)
.ContinueWith((t) =>
{
var response = (HttpWebResponse)t.Result;
var reader = new StreamReader(response.GetResponseStream());
var message = reader.ReadToEnd();
return new ServiceResponse() { IsSuccess = true, Message = message };
});
try
{
return task.Result;
}
catch (AggregateException ae)
{
throw MappedAggregateException(ae);
}
});
}