I have edited the post to include code tags. It looks much better that wayPlease use [code]code here...[/code] tags when posting code.
Note that AsyncStreamsText is more sophisticated than the code you previously used. It collects the text so if a message is split into several "packets" it will still be parsed correctly.
AsyncStreamsText is without doubt more sophisticated, but my code actually also collects packets as btText is a global variable. So even if the text arrives in chunks it is appended to btText and only interpreted when a CRLF is detected.