Because the caller can exit while executing Latch.query etc, we risk interrupting the refresh itself. Interrupting a refresh means losing the session since a refresh token can never be re-used.
This wraps refresh in an unlinked Task, under a managed Task supervisor. This means refresh can now finish even if the caller exits.