Is it possible that JavaScript setTimeout() fires earlier? I wrote a utility function to create an async timeout: