Well, just a full implementation of HTTP 1.1 with proper error handling is non-trivial.
The flowchart starts:
- Is service available? Status 503 if not.
- Is URI too long? Status 414 if it is.
- Are headers too large? Status 431 if it is.
- Does the request require any functionality that is unimplemented? Status 501 if there is.
- etc…