When input-stream is an echo stream,
the character is echoed on input-stream the first time the character is
seen.
Characters that are not echoed by read-char
are those that were
put there by unread-char
and hence are assumed to have been echoed
already by a previous call to read-char.

If recursive-p is true,
this call is expected to be embedded in a higher-level call to read
or a similar function used by the Lisp reader.