.recv will return a Buf in binmode, Str otherwise

So you wont end up with binary data in a Str. If binmode is
turned off, the received data will be an utf8 encoded string.
An exception is thrown if it is unable to do so.