In order to provide a better experience for users we have begun flushing our head section of our website well before we have accumulated and rendered the HTML to be sent to a client. This has many benefits...
The only thing that might appear to the user's screen instantly is a new title in the window bar but not many people would pay attention to just that title. You might want to include some HTML in the initial flushing so users can see content right away. In fact, try to make the main HTML code file size as small as possible, so that you can flush everything at once. This means using basic javascript if your HTML contains lots of repetitive code blocks. Or if you don't want javascript, and you have lots of text that fills several pages, consider creating categories for your content then have one HTML file in each category.
... For what would normally be a 500 or 400 response, we are currently returning a 200.
You'll need to setup your server so that on each request, it successfully passes all the checks required to deliver the 200 response BEFORE any output is sent to the client (a.k.a. your website visitor's browser) because in the HTTP 1.x specification, the first line of output (10th character I think) is the actual status code delivered to the client. Yes I understand this increases the time to first byte somewhat, but delivering the truth is well worth it for all your guests (including the google robot, googlebot).
The first line in a typical HTTP 1.x request goes along the lines of:
HTTP/1.1 200 Success
Then after other HTTP headers can be used to optimize the page. Consider client caching.
After the HTTP headers are sent to the client, The HTML then follows.