Очевидно вы не понимаете разницу между «выполнилась функция» и «случилось что-то асинхронное».
Поскольку код вы не показываете, то я могу только угадывать что обе функции делают запрос в API телеги и не дожидаются ответа. Но никто не гарантирует что запрос отправленный раньше будет выполнен первым.
Если придумывать аналогии, то можно считать что вы отправляете письма по почте. Отправленное раньше письмо вовсе не обязательно придёт адресату первым. Его могли потерять на почте. Могли отправить поездом, а второе самолётом и т.п.
И тут то же самое, хотите гарантировать очерёдность — дождитесь ответа на первый запрос и только потом отправляйте второй. (Хотя и это не 100% гарантия, иногда и сама телега тупит и показывает сообщения в неправильном порядке).
На самом деле, даже гугл так не заморачивается. Если посмотреть на выдачу поиска по картинкам, то там видно что картинки на самом деле больше чем на них отведено места и просто обрезаются по краям средствами CSS.
Владимир, У Map есть полезное свойство size.
У Map нет прототипа поэтому map.has(key) понадёжнее чем key in obj если ключ приходит из ненадёжных источников.
Map гарантирует порядок ключей (если они «разношёрстные»).
Надим Закиров, ну я же написал, если хотите каких-то очень нетривиальных действий с заголовками до отправки. В общем, в 99% случаев обычного объекта достаточно.