okay so I'm gonna assume that there aren't any security issues with what I wrote, regardless I found some other issues
1. due to the way next-auth calls Adapter functions using the normal method for having a method on a class doesn't work you need to have member variables which are set to arrow functions instead
2. my lazy way of dealing with setTimeout via calling the window version was dumb and I ended up using ReturnType instead
3. setTimeout(at least the one Node provides) doesn't like getting a number that's bigger than a signed 32 bit integer can handle so I had to add a safety guard in the Cache setLifespan to max it out at 2^32 - 1