Wasn't a caching issue (unless Google's Edge cache isn't domain aware). Was a mixture of using class-based views, lazy loading, and not understanding the underlying framework execution path fully. A little more digging and I found a thread-safe way to utilize class based views with lazy loading.
The framework was never instantiating a new instance of the class to handle each request, instead recycling a previous instance (this has its pros/cons). While handling requests, it would update the request object in the instance of the class-based view, so if a second request came in before the first request was done executing, the request object was updated to the second requests' and the first request completed execution with it. There is a way to have the framework create new instances of the class for each request which I've now switched to.
Thank you for the advice, my apologies for not realizing my mistake before posting.
-Prateek