More unit tests, using async framework for parallel test execution, creating shouldThrow and shouldNotThrow callbacks that actually test whether a function has thrtown an error and not just whether it can throw an error