Por que não posso passar “window.location.reload” como um argumento para setTimeout?

Eu adoraria ter uma ideia do erro que estou vendo no Safari e no Chrome com a seguinte linha de código:

setTimeout(window.location.reload, 250);

Relatórios do Chrome:
Uncaught TypeError: Illegal invocation

E Safari:
TypeError: Type error

No FireFox, o código é executado corretamente. Além disso, esse código é executado bem em cada um dos três navegadores:

setTimeout((function() {
  window.location.reload();
}), 250);

O Chrome e o Safari não têm problemas com este código:

var say_hello = function () { alert("hello") };  
setTimeout(say_hello, 250);  

O que é especial sobrewindow.location.reload que causa esse erro?

(não tenho certeza se é útil ou não, mas aqui está umjsfiddle ilustrando isso)

questionAnswers(3)

yourAnswerToTheQuestion