Как только сервер отправил клиенту строку состояния (самую первую строку ответа), вы больше не можете изменять код состояния ответа. Многие серверы откладывают отправку ответа из-за внутренней буферизации, пока буфер не заполнится. Пока буфер заполняется, вы можете изменить свое мнение об ответе.
Если у вашего клиента есть доступ к заголовкам ответа, вы можете использовать тот факт, что chunked-кодирование позволяет серверу добавлять трейлер с заголовками после тела, кодированного в chunked. Таким образом, ваш сервер, обнаружив ошибку, может изящно прекратить отправку тела, а затем отправить трейлер, который устанавливает некоторый заголовок для некоторого значения. Ваш клиент будет интерпретировать наличие этого заголовка как признак того, что произошла ошибка.