If the length of expected header is accidentally larger than the length
of the actual header, `socket.read()` will keep pulling bytes from the
socket which could no longer produce any, hence the later calls of
`socket.read` will return a `WouldBlock` Error.