Testowanie jednostki asynchronicznej Silverlight

Mam dziwny problem z Silverlight Unit Test Framework. Pierwsza wykonana metoda zawodzi za każdym razem. Mam drugi test z dokładnie tym samym kodem i przechodzi. Dziwną rzeczą przy pierwszym wywołaniu jest fakt, że faktycznie czeka na limit czasui wtedy wykonuje wywołanie repozytorium (pod nim znajduje się HTTP PUT, jeśli ci zależy). Oto kod - pierwszy z nich kończy się niepowodzeniem za każdym razem, drugi przechodzi za każdym razem:

    [TestMethod]
    public void AuthShouldSucceed()
    {
        var autoResetEvent = new AutoResetEvent(false);

        _authRepository.Authenticate(_username, _password, response =>
        {
            Assert.IsTrue(response);
            autoResetEvent.Set();
        });
        if (!autoResetEvent.WaitOne(Constants.Timeout))
        {
            Assert.Fail("Test timed out.");
        } 
    }

    [TestMethod]
    public void AuthShouldSucceed2()
    {
        var autoResetEvent = new AutoResetEvent(false);

        _authRepository.Authenticate(_username, _password, response =>
        {
            Assert.IsTrue(response);
            autoResetEvent.Set();
        });
        if (!autoResetEvent.WaitOne(Constants.Timeout))
        {
            Assert.Fail("Test timed out.");
        } 
    }

Edytować: Moje ostateczne rozwiązanie to modyfikacja rozwiązania Vladmira:

    [TestMethod]
    [Asynchronous]
    public void AuthShouldSucceed()
    {
        var complete = false;
        var result = false;

        _authRepository.Authenticate(_username, _password, response =>
        {
            complete = true;
            result = response;
        });

        EnqueueConditional(() => complete);
        EnqueueCallback(() => Assert.IsTrue(result));
        EnqueueTestComplete();
    }