There are many test frameworks out there. Here is how Kava compares to them.
Mocha has no way to know exactly which tests are tied to which suites, it only guesses the relationship based on which tests and which suite was last created. So when creating your tests and suites asynchronously, it all falls down.
Mocha requires custom reporters to be bundled within it, rather than as their own npm modules.
Mocha tests must be run through the mocha runner, joe tests can be run directly.
Mocha will probably crash when you create your tests asynchronously. More info.