Exception not thrown in an async Task configuration
<p>I have the following method</p>

<pre><code>    public async Task&lt;bool&gt; Connect()
    {
        lock (_connectingLock)
        {
            if (_connecting)
                throw new IOException("Already connecting");
            _connecting = true;
        }

        try {
             await tcpClient.ConnectAsync(...); 
        }           
        catch (SocketException e)
        {
            return false;
        }
        finally
        {
            lock (_connectingLock)
            {
                _connecting = false;
            }
        }
    }
</code></pre>

<p>Now, I would expect consecutive calls to <code>Connect()</code> to throw an IOException, but it doesn't happen!</p>

<p>What could be the cause?</p>
