Handling < 4 byte first data chunks

when the data handler is called for the first time on a new message and less than 4 bytes are passed, this segment of code would throw a RangeError('Trying to access beyond buffer length');

The change requires the code to wait for at least 4 bytes and potentially re-assemble the buffers to read that initial message size from the buffer.  If the buffer is complete, it will not re-concat.