From the call stack you posted, I see that the exception occurs in a seperate thread.
It seems that only exceptions thrown in the calling thread of the test method cause the test to fail. Consider this example:
[TestMethod]
public void ThreadExceptionTest()
{
new Thread(() => { throw new Exception("Error in thread"); }).Start();
}
Also see this question: how-to-handle-exceptions-raised-in-other-threads-when-unit-testing