public static Task<Stream> GetRequestStreamAsync(HttpWebRequest request)
{
var taskComplete = new TaskCompletionSource<Stream>();
request.BeginGetRequestStream(asyncResponse =>
{
try
{
HttpWebRequest responseRequest = (HttpWebRequest)asyncResponse.AsyncState;
Stream someResponse = (Stream)responseRequest.EndGetRequestStream(asyncResponse);
taskComplete.TrySetResult(someResponse);
}
catch (Exception ex)
{
taskComplete.TrySetException(ex);
}
}, request);
return taskComplete.Task;
}