title: Javascript synchronous AJAX timeout
body: <p>My Javascript needs to send some data to a server when the page closes, which I currently do with a synchronous AJAX (SJAX?) request in <code>window.onbeforeunload</code>. The problem with this, of course, is that if my server takes too long or the network connection dies, the browser freezes.</p>
  
  <p>From what I've read, it's not possible to specify a timeout for synchronous AJAX requests, and asynchronous AJAX requests don't work on <code>window.onbeforeunload</code>. My best guess at how to solve this would be to use an asynchronous request, and then lock up the browser for some time to let the request finish:</p>
  
  <pre><code>window.onbeforeunload = function() {
    doSomeAjax(); // asynchronous request
  
    var now = new Date();
    var time_limit = now.getTime()+2000; // 2,000 ms
    while(now.getTime() &lt; time_limit) {
      now = new Date();
    }
  }
  </code></pre>
  
  <p>Would this work? Are there any potential issues with this method?</p>