Minor fixes

- Fixing how `xhr` is nulled within `client.request()` & `client.response()` by leveraging the `Promise`
- Fixing XHR `Promise` rejection by throwing `e` because the error is not really handled in this case
- Renamed `future` parameter to `deferred` for internal standardization