The headers method in httpBatchLink/httpLink is allowed to be async. I don't put my auth behind tRPC (using Okta) so I call the retrieve/refresh methods in there to get the latest/new token.
Within tRPC you might have more of a challenge because you're calling tRPC within a call to tRPC using that method, but in principle that's the tidy way to go about it