navigator.geolocation working only sometimes or not working at all

really annoying if you've ever worked with navigator.geolocation, you'll realize that sometimes it just doesn't work at all.  i thought there was some type of rate limiting where you can only make a request x times per hour.  as it turns out, there are error callbacks and by default navigator.geolocation has an infinite timeout.  to make matters worse, navigator.geolocation sometimes just doesn't work at all making it very unreliable.

as an example: this function will wait up to 15 seconds and then call the error callback if it cannot find the location: