# Extra There are some niche features of @root/request which are beyond the request.js compatibility. ## async/await & Promises The differences in async support are explained in [README.md](/README.md), up near the top. If you're familiar with Promises (and async/await), then it's pretty self-explanatory. ## ok Just like WHATWG `fetch`, we have `resp.ok`: ```js let resp = await request({ url: 'https://example.com' }).then(mustOk); ``` ```js function mustOk(resp) { if (!resp.ok) { // handle error throw new Error('BAD RESPONSE'); } return resp; } ``` ## streams The differences in stream support are explained in [README.md](/README.md), up near the top. ## userAgent There's a default User-Agent string describing the version of @root/request, node.js, and the OS. Add to the default User-Agent ```js request({ // ... userAgent: 'my-package/1.0' // add to agent }); ``` Replace the default User-Agent ```js request({ // ... headers: { 'User-Agent': 'replace/0.0' } }); ``` Disable the default User-Agent: ```js request({ // ... headers: { 'User-Agent': false } }); ```