$ curl -v http://site.com --resolve site.com:80:127.0.0.1
* Added site.com:80:127.0.0.1 to DNS cache
* Rebuilt URL to: http://site.com/
* Hostname site.com was found in DNS cache
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to site.com (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: site.com
> User-Agent: curl/7.58.0
> Accept: */*
Очевидно вы не понимаете разницу между «выполнилась функция» и «случилось что-то асинхронное».
Поскольку код вы не показываете, то я могу только угадывать что обе функции делают запрос в API телеги и не дожидаются ответа. Но никто не гарантирует что запрос отправленный раньше будет выполнен первым.
Если придумывать аналогии, то можно считать что вы отправляете письма по почте. Отправленное раньше письмо вовсе не обязательно придёт адресату первым. Его могли потерять на почте. Могли отправить поездом, а второе самолётом и т.п.
И тут то же самое, хотите гарантировать очерёдность — дождитесь ответа на первый запрос и только потом отправляйте второй. (Хотя и это не 100% гарантия, иногда и сама телега тупит и показывает сообщения в неправильном порядке).
На самом деле, даже гугл так не заморачивается. Если посмотреть на выдачу поиска по картинкам, то там видно что картинки на самом деле больше чем на них отведено места и просто обрезаются по краям средствами CSS.
Владимир, У Map есть полезное свойство size.
У Map нет прототипа поэтому map.has(key) понадёжнее чем key in obj если ключ приходит из ненадёжных источников.
Map гарантирует порядок ключей (если они «разношёрстные»).