Refactoring the ID token fetch to live outside exchange