This started as a feature request for our upstream API (closes#33) that
led to a bit of rework to help make the library a bit more flexible in
terms of not needing modification when something on the API changes.
This update also includes your typical round of dependency updates and a
bit of preemptive planning by way of dropping support for Node.js as
we're on the cusp of it being out of maintenance and the release of
Node.js v18.