You can unit test async calls in MSTest or NUnit, etc, it just takes a little extra effort. The error you see is the PersistenceManager complaining about a thread synchronization problem which you can work around.
The easiest, although possibly not the most robust, way to solve the problem is to set the appropriate SynchronizationContext at the beginning of your test (or in a test or class initializer), like so:
SynchronizationContext sc = new System.Windows.Forms.WindowsFormsSynchronizationContext();
System.Windows.Forms.WindowsFormsSynchronizationContext.SetSynchronizationContext(sc);
Once set, you can then issue async calls from your test method without the PM throwing an exception.
Our own unit test suite for the framework actually uses a more complex (and possibly convoluted) approach to async unit testing which involves creating a form for each test.