Fix timeouts

This is a fix for issue #142 

Basically using the polyfill function ensures that request.timedout is set to true before onreadystatechange is called (this is not guaranteed with ontimeout).
We still want the onreadystatechange handler to fire here because that's what actually handles the timeout