There was a missing socket.close() after state changed to closed. On a very specific usage pattern, this could trigger a re-read with broken invariants.