protected virtual void ProcessRequestThen(
            MvxRestRequest restRequest,
            HttpWebRequest httpRequest,
            Action continueAction,
            Action<Exception> errorAction)
        {
            httpRequest.BeginGetRequestStream(result =>
                                              TryCatch(() =>
                                                  {
                                                      using (var stream = httpRequest.EndGetRequestStream(result))
                                                      {
                                                          restRequest.ProcessRequestStream(stream);
                                                          stream.Flush();
                                                      }

                                                      continueAction();
                                                  }, errorAction)
                                              , null);
        }
 private async Task AddContentIfNeededAsync(HttpWebRequest httpRequest, MvxRestRequest restRequest, CancellationToken ct)
 {
     if (restRequest.NeedsRequestStream)
     {
         var task = Task.Factory.FromAsync(
             (cb, o) => ((HttpWebRequest)o).BeginGetRequestStream(cb, o),
             res => (Stream)((HttpWebRequest)res.AsyncState).EndGetRequestStream(res),
             httpRequest,
             hr => hr.Abort(),
             ct);
         using (Stream stream = await task.ConfigureAwait(false))
         {
             restRequest.ProcessRequestStream(stream);
             stream.Flush();
         }
     }
 }