It might be worth updating the GitHub Issue: the impression I got from looking at it was that it wasn't a priority (the most recent official comment is over a year old and comes across as quite dismissive of the request).
I've experienced both: explicit passing of immutable Contexts in Go and using ThreadLocal storage in Java (DropWizard) apps.
I think it was our mistake to use ThreadLocal storage for request-specific data. This directly couples threads (which are an OS / scheduling concern) to the serving of requests. We then ran into issues spawning new background threads, or naively switching to Kotlin Coroutines (which can be scheduled on a different thread).
So I prefer the explicit, immutable context passing that Go uses. The `getThing()` pattern you mention seems reasonable and gives you some type safety that is otherwise missing with a bare `context.Value()` calls.
It might be worth updating the GitHub Issue: the impression I got from looking at it was that it wasn't a priority (the most recent official comment is over a year old and comes across as quite dismissive of the request).