We should only call `req.abort` in cases that the real xhr would trigger an `onerror` to make sure we're following the same code paths. So 404s and other errors would still go through `req.respond`.

It would be hard to test the abort case on remote servers, but perhaps we can make a request against a non-existent server to simulate it being unavailable.