Attempts to read len bytes of out-of-band data from the stream,
and returns it as a string. Less than len bytes can be returned
if:
the stream has been closed from the other end, or
nonblocking mode is used, or
not_all is set, or
not_all isn't set and an error occurred (see below).
If not_all is nonzero, read_oob() will only return as many
bytes of out-of-band data as are currently available.
If something goes wrong and not_all is set, zero will be
returned. If something goes wrong and not_all is zero or left
out, then either zero or a string shorter than len is returned.
If the problem persists then a later call to read_oob() will
fail and return zero, however.
If everything went fine, a call to errno() directly afterwards
will return zero. That includes an end due to remote close.
If no arguments are given, read_oob() will read to the end of
the stream.