abstract firehose protocol
more efficient protocol (recv)