If you need a synchronous request, then, in my opinion, yes.
But it would be nice to handle a WebException. In WebException.Response.GetResponseStream () you should have an HTTP / HTML error or soapfault page.
// ...
var result = request.BeginGetResponse(...)
// , BeginGetResponse doesnt timeout...
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle,...)