split async function tests into multiple test functions
remove duplicative then-based test that async function returns promise
unrefactor async function test assertions
ensure multiple calls don't return the same promise
ensure async function that throws rejects its promise