@bagder It was designed to be stateless and handle one-shot requests, but was mated to HTML, which may require multiple requests to retrieve the complete contents of a page. That right there was a step 1 design fail.
It lacks message IDs, which are common best practice and are used by every protocol underneath it, for many good reasons. That glaring lack, and the lack of well defined message lengths, has hindered all subsequent progress. Another step 1 design fail.