Isso é um comportamento inesperado em
ExecuteReader()
- provavelmente um bug. Nas profundezas do ExecuteReader()
algum erro aleatório ocorre, provavelmente um tempo limite de rede, a conexão é fechada e, em seguida, um SqlDataReader
fechado é retornado como se nada tivesse acontecido. Não é de admirar a chamada subsequente para HasRows
produz uma exceção.