Async: Tests are now Promise-aware

Fixes #632.
Ref #534.

I'm **not** loving how un-DRY the `Test#run` function is... but that's not _new_, only exacerbated by this PR.

Criticism or other suggestions welcomed, as usual.

cc: @domenic @stefanpenner
I don't see the value of this test. Existing tests all return `undefined` (implicitly with no return or a guard-clause like `return;`). Returning an object is not something we ever supported and I see no reason for testing for that.