Depends on D18855. Ref T13036. This comment no longer seems to be accurate: anything we send over stderr is faithfully shown to the user with recent clients.
From this document, the missing sauce may have been:
A generic error response type is also supported. It consists of a an error message written to ``stderr`` followed by ``\n-\n``. In addition, ``\n`` is written to ``stdout``.
That is, writing "\n" to stdout in addition to writing the error to stderr. However, this no longer appears to be necessary.
I think the modern client behavior is generally sensible (and consistent with the behavior of Git and Subversion) so this probably isn't a bug or me making a mistake.