Если BeginRequest уже произошел и задержка наступает раньше, чем PreRequestHandlerExecute, вы можете записать идентификатор потока. Если это не так, вы страдаете гибкостью потоков ASP.NET.
Причиной этого может быть использование сеансов. ASP.NET использует блокировку чтения-записи в HttpContext.Current.Session. Если вы записываете в эту переменную, все остальные запросы с тем же сеансом не могут выполняться одновременно и помещаются в очередь. .NET использует механизм опроса, чтобы проверить, снята ли блокировка сеанса.
Я бы также порекомендовал проверить, что вы используете Release и что system.web/compilation/@debug = 'false'