The Python implementation of similar functions do some automatic caching (userland), but I thought it was a deliberate choice for the Go Runtime to keep the implementation simple and flexible just by wrapping the Backend call and let the user do its own caching if needed. AFAIK the backend doesn't do any optimization and will always get a new token.