The memory pointed by the |data| is not copied within Session.memRecv or Session.recv, so the data provider controls its lifetime. This can be either Connector.read for Session.recv, or a ubyte[] slice from the one provided to Session.memRecv
If the application uses Session.memRecv, it can set |pause| to make Session.memRecv return without processing further input bytes.
If the function returns false, Session.memRecv or Session.recv would return with ErrorCode.CALLBACK_FAILURE.
Callback function invoked when a chunk of data in DATA frame is received. The |stream_id| is the stream this DATA frame belongs to. The |flags| is the flags of DATA frame which this data chunk is contained. `(flags & FrameFlags.END_STREAM) != 0` does not necessarily mean this chunk of data is the last one in the stream. You should use Connector.onFrame to determine that all data frames are received.