Eu consegui confirmar suas observações (e as minhas) examinando o código do módulo ModSecurity IIS, no GitHub .
Descobri que o código dentro de CMyHttpModule::OnSendResponse
, CMyHttpModule::OnPostEndRequest
e CMyHttpModule::OnBeginRequest
está agrupado em
EnterCriticalSection(&m_csLock);
...
LeaveCriticalSection(&m_csLock);
Isso, juntamente com a abordagem singleton de CMyHttpModuleFactory::GetHttpModule()
e o fato de que m_csLock
é uma variável de CMyHttpModule
inicializada apenas em seu construtor (chamada apenas uma vez, porque usa a mesma instância para todas as solicitações) significa que todos os pedidos que chegam em segmentos diferentes são colocados em espera e executados um por um.
Também criei uma marcação para este problema na página do projeto ModSecurity, no GitHub .