xhr cleanup

stop using the next tick hack, just do all our xhr construction
in order and then call send
handle unknown errors from xhr

this function will be called if a CORS error is thrown