Async: Fail assertions after existing assert.async flows are resolved

Fail assertions after existing `assert.async` flows are resolved.

Fixes #668
Closes #669
I also vote for initializing `done` on the same line as the declaration. This is repeated in almost every test below. Unless there is a practical reason for keeping it like this, I prefer less code over defensive programming.