А с чего бы ему её ждать? Если функция(firstFunction) асинхронная, то если ты её запустил - то она пошла выполняться отдельно, а всё что после неё выполняется сразу всё равно.
Асинхронная функция сама по себе должна возвращать промис, либо принимать коллбэк. Если этого не предусмотрено - ты никак не сможешь её ждать.