When are you doing that? is it in a module event?
It should be perfectly doable in an integrated pool as well.
Bottom-line there are changes on how ASP.NET hooks to IIS when running in Integrated mode that makes it "more first class". This does mean that certain events fire before, for example Application_Start will now fire outside the context of an actual request. Other examples are expecting to have a Windows Authenticated Identity in the BeginRequest, since now BeginRequest happens even before IIS authenticates, which was not the case in the past.
If your application depends on the old bad behavior you can still change your AppPool to run in Classic Mode and it will work just fine.
You should be able to grab the Request in any notifications that are request specific such as BeginRequest, EndRequest, PostAuthorizeRequest, etc.
Also, I would recommend against using HttpContext.Current since that incurs an additional look up in a hash table and usually you can get the context directly in other ways, specially in the context of a module, so for example if you handle the BeginRequest, you should be able to do:
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
and you will save the lookup.
From your description it sounds like you should be implementing a module that handles BeginRequest and EndRequest and you should be fine.