Node Does Not Exit For One-Off Scripts
<!--
Please DO NOT DELETE THIS TEMPLATE or your issue may be closed immediately.
Before opening an issue, search for open and closed GitHub issues that match your situation.

If this is a Live Stream issue please go back and use the Live Streaming issue template.
-->

# Bug Report

### Describe the Bug
When using this library to get information about Ring devices, the script does not exit immediately once it is completed. When used with a serverless function (like AWS Lambda), the request continues to run until it times out.


### To Reproduce
Steps to reproduce the behavior:
```js
# test_ring.js
const getenv =  require("getenv");
const dotenv = require("dotenv")
const { RingApi } = require('ring-client-api');

async function run() {
  dotenv.config();
  const ringApi = new RingApi({
    refreshToken: getenv('RING_TOKEN'),
  });
  const locations = await ringApi.getLocations();
  const location = locations[0];
  const devices = await location.getDevices();
  ringApi.disconnect();
  console.log(devices.length);
  console.log('done');
}

run()
```

"done" is printed pretty quickly but node continues to run until you run "ctrl-c".
```sh
$ time node test_ring.js
61
done
^C

real	0m40.989s
user	0m0.644s
sys	0m0.195s
```

### Expected behavior
Script exits as soon as "done" is printed.

### Additional context
Using `wtfnode`, I was able to pinpoint that the script is not exiting due to the [`setTimeout` in rest-client.ts](https://github.com/dgreif/ring/blob/b14442f1f64b9922d84f7357f7dde8475d6bd5c6/api/rest-client.ts#L118-L122).

I can open up a PR but wanted to see what you think the approach should be. A constructor option to prevent the settimeout from being set, perhaps?


### Environment
<!-- ✍️edit: -->
 - OS: MacOS 11.6
 - Node.js: 12.20.2
 - NPM: 6.14.11
 - ring-client-api: 9.23.0
