The reason I use "setTimeout" instead of calling it is I don't want to chain onHashChange as synchronized function. It should run asynchronously like event dispatches.

I had read the code, it doesn't use the event object, but I can create one for it. Do I need it??

I had run all unit tests of SMS, this patch doesn't break any unit tests. And I don't think there is a unit test covering this. If it has, this bug should be found earlier.