Лучше уж у многих спросить, чем самому что то выбрать
Ну и асинхронность, куда же без нее в современном вебе? Здесь нужно четко представлять, что значит асинхронное выполнение кода, уметь в голове моделировать, в случае необходимости, хотя бы приблизительную картину того, что происходит в рантайме, когда скрипт исполняется интерпретатором. Это важно, с асинхронностью тоже у многих проблемы, они совершенно не представляют себе ход выполнения программы.
С этим вопросом нужно обратиться к Event Loop, циклу, который приводит в движение асинхронный механизм работы кода на js