Why does my 2 AsyncCallbacks behave like Synchronous calls
<p>I believe I've set this up correctly. Can somebody see anything wrong with this code. Should it execute IAsyncResult asyncResult1 and then immediate move to IAsyncResult asyncResult2? The behavior is that it invokes asyncResult1 (calling the ExecuteAsyncRequest) the rest service keeps it for a bit and then returns it and the next one is called. Shouldn't it just  BeginGetResponse and then move on to the next call?</p>

<p><strong>The WCF Rest Service web method is:</strong></p>

<pre><code> public Stream CheckOutForMaster(Stream clientServerXmlStream)
    {
       //Logic 1: Checks if it's between a set 30 second window.
       //Logic 2: Processes more logic
       //Logic 3: Holding pattern until the 30 second window is complete. Thus allowing multiple calls to be made via other connections.
       //Logic 4: Once 30 second window is complete. All connections have saved their  data to a database and each connection will retrieve all data from all connects.
    }
</code></pre>

<p><strong>Client side test code:</strong></p>

<pre><code>[TestClass]
public class sccTests
{
    public static ManualResetEvent allDone = new ManualResetEvent(false);
    const int BUFFER_SIZE = 1024;
    const int DefaultTimeout = 2 * 60 * 1000; // 2 minutes timeout
    List&lt;XDocument&gt; asyncClientServers;

    [TestMethod]
    public void CheckoutForMaster_OneClientServer_ReturnsAllMasterStatus()
    {
        string urlTest = CombineWithSccBaseUrl("/v1/clientservers/checkout");
        ...
        IAsyncResult asyncResult1 = ExecuteAsyncRequest(urlTest, xmlPayloadAllMaster);
        IAsyncResult asyncResult2 = ExecuteAsyncRequest(urlTest, xmlPayloadAllWait);
    }

    private IAsyncResult ExecuteAsyncRequest(string url, string payload)
    {
        try
        {

            byte[] bytes = Encoding.UTF8.GetBytes(payload);

            Uri uri = new Uri(url);
            // Create a HttpWebrequest object to the desired URL.
            HttpWebRequest myHttpWebRequest1 = (HttpWebRequest)WebRequest.Create(uri);
            myHttpWebRequest1.Method = "POST";
            myHttpWebRequest1.CachePolicy = new RequestCachePolicy(       RequestCacheLevel.NoCacheNoStore);
            myHttpWebRequest1.ContentLength = bytes.Length;
            myHttpWebRequest1.ContentType = "application/xml;charset=UTF-8";
            myHttpWebRequest1.Timeout = 105000;

            using (Stream putStream = myHttpWebRequest1.GetRequestStream())
            {
                putStream.Write(bytes, 0, bytes.Length);
            }

            // Create an instance of the RequestState and assign the previous myHttpWebRequest1
            // object to it's request field.  
            RequestState myRequestState = new RequestState();
            myRequestState.request = myHttpWebRequest1;

            // Start the asynchronous request.
            IAsyncResult result = myHttpWebRequest1.BeginGetResponse(new AsyncCallback(RespCallback), myRequestState);
        }
        catch (WebException e)
        {
            string t = e.Message;
        }
        catch (Exception e)
        {
            string t = e.Message;
        }

        return null;

    }


    private void RespCallback(IAsyncResult asynchronousResult)
    {
        try
        {
            // State of request is asynchronous.
            RequestState myRequestState = (RequestState)asynchronousResult.AsyncState;
            HttpWebRequest myHttpWebRequest2 = myRequestState.request;
            myRequestState.response = (HttpWebResponse)myHttpWebRequest2.EndGetResponse(asynchronousResult);

            // Read the response into a Stream object.
            Stream responseStream = myRequestState.response.GetResponseStream();
            myRequestState.streamResponse = responseStream;

            if(myRequestState.response != null &amp;&amp; myRequestState.response.StatusCode == HttpStatusCode.OK)
            {
                StreamReader reader = new StreamReader(myRequestState.response.GetResponseStream(), Encoding.GetEncoding(1251));
                XDocument xResult = XDocument.Load(reader);
                asyncClientServers.Add(xResult);
            }
        }
        catch (WebException e)
        {
            // Need to handle the exception
        }
    }

 }
</code></pre>
