Stop using try {} catch {} and make callbacks a bit better

I heard that we should use window.onerror instead of try {} catch {} because JIT compilers like it better. Either way we don't have to check every option every time we get an XHR object.

Also, callbacks wouldn't work if the response was anything but 200. I got rid of that check so that the callbacks would always call, but now you get the xhr object too, so you can check the response status code if you want.