A few hints for those who want to test asynchronous stuff (how I ended up doing that) :
1) Use utest programmatically instead of relying on the sbt test integration - it is really much more flexible and it lets you do whatever you want. I personally will use utest for testing everything this way only.
2) If you have some async tests, use PhantomJSEnv(autoExit = false) for all tests, even those synchronous. Just call System.exit(0) after you interpret the results. It just works and it is easily maintainable.
I went almost crazy trying to do the opposite. Don't do that, really :-) It might seem to be a code smell to even test asynchronous stuff, but I just sometimes don't know what to expect from the javascript/browser environment, it just often behaves really weird and I don't have time to manually play with it in browser, it is much better to prototype it in a test suite first instead of playing with it in browser.