Потому что пока оно сидит в Receive, все пляски с закрытием сокета, диспозом, добавлением флагов в его состояние, будут работать через пень-колоду - пока не примутся данные или не наступит таймаут приёма, всё будет где-то крутиться и оставаться открытым