Data sent using the method frame will be prefixed with the number of bytes in the data.
All chunks recieved on the stream will be buffered until the full frame has been recieved, and then it
will be emitted as a frame event.

Do not use stream.setEncoding() when using this to frame data. The encoding will try to convert the raw bytes into strings,
mangling the octet count and data byte cound in the process. The stream docs
suggest to always use setEncoding when reading the data as strings, but this is just to buffer parts of the data enough to
properly encode multi-byte characters. When framing data, all of the data will be buffered and encoding should work as expected.

The stream will automatically start to be consumed when using this method.