title: setTimeout refuses to send the parameters to callback
body: <p>I was allways certain that all the additional parameters you pass to <code>setTimeout</code> will be forwarded to the callback:</p>
  
  <pre><code>function say(what) {
    alert(what);
  }
  setTimeout(say, 500, "Hello world.");
  </code></pre>
  
  <p>MDN confirms this belief of mine:</p>
  
  <pre><code>var timeoutID = window.setTimeout(func, [delay, param1, param2, ...]);
  </code></pre>
  
  <p>But not so much the actual code:</p>
  
  <pre><code>function reload(cb) {
    var req = new XMLHttpRequest();
    req.open("GET", location.href);
    //Call the callback on request completion
    req.onload = function() {
      console.log("Reloaded, calling callback.");
      if(cb!=null)
        cb();
      else
        console.log("  Callback is null.");
    }
    //Debug info
    console.log("Sending request. Callback: "+cb);
    console.log("   Arguments: "+arguments.length);
    req.send(); 
  }
  function waitReload() {
    console.log("Reload in 20 ms.");
    //Sending 3 arguments in 20ms
    setTimeout(reload, 20, waitReload, "BLE", "Number 666");
  }
  waitReload();
  </code></pre>
  
  <p><sup><a href="http://jsfiddle.net/Darker/kotz77m6/" rel="nofollow">jsFiddle</a></sup></p>
  
  <p>This prints out:</p>
  
  <pre><code>Reload in 20 ms.
  Sending request. Callback: undefined
    Arguments: 0
  Reloaded, calling callback.
    Callback is null.
  </code></pre>
  
  <p>No arguments are sent to the callback function. Why? The first code doesn't work either, it alerts <code>undefined</code>.</p>