So the server here is either going to hand out a key from cache or return `cache_empty`. Wrapping this in try/catch for the gen_server timeout is a good idea so the API is correct :)

I'm not sure if it's worth customizing the gen_server timeout, but we could grab the value from app config and use `call/3`. Thoughts?