I no longer remember.  It's the same in Blather::Stream::Parser and in some places `<<` is an alias for `receive_data` (i.e. it has side effects).  I'm not sure if that's the case here.  Could be that I just overlooked this when I simplified the parser code from Blather::Stream::Parser.