For implementation reasons, the WS implementation sends out a streamed WS message as this succession of frames:
TEXT fin = false empty
CONTINUATION fin = false data chunk 1
CONTINUATION fin = false data chunk 2
CONTINUATION fin = true empty
Source.single(FrameEvent.empty(opcode, fin = false)) ++
data.map(FrameEvent.fullFrame(Opcode.Continuation, None, _, fin = false)) ++
The first frame could be optimized away.
This was observed in #730 by @elseorand.
=htc #748 optimize frame creation for streamed WS messages
Previously, a single empty frame was created to start a WS message. Now,
a streamed message will only be begun when the first data comes in.
Fixed by #749.