Teste de unidade assíncrona do Silverlight

Estou tendo um problema estranho com o Silverlight Unit Test Framework. O primeiro método executado falha toda vez. Eu tenho um segundo teste com o mesmo código exato e ele passa. O estranho da primeira vez que é chamado é que ele realmente aguarda o tempo limitee depois executa a chamada do repositório (por baixo é um HTTP PUT se você se importa). Aqui está o código - o primeiro falha toda vez, o segundo passa toda vez:

    [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.");
        } 
    }

Editar: Minha solução final é uma modificação da solução de Vladmir:

    [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();
    }

questionAnswers(3)

yourAnswerToTheQuestion