The use of "async" here is a bit different than I expect.  I expect "async" to mean that there's a `gen_server:cast/2` or `!` used, and we don't wait for a reply.  AFAICT, this ends up being a `gen_server:call/2` to the token server and thus a full round-trip and thus feeling pretty synchronous.  :-)