Здравствуйте, Слава, Вы писали:
С>А является ли асинхронным сам вызов
С>if (navigator.geolocation)
?
Так тут же объект, а не промис, значит все синхронно. Вообще не помню, чтобы проперти бывали асинхронными. А вот watchPosition() и getCurrentPosition() уже асинхронные, они-то и "вернут" ошибку, если не дали разрешения.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.