public Stream GetPayloadStream(Header header) { if (IsStreamPayload(header)) { return(_streamManager.GetPayloadStream(header)); } else if (!_activeAssemblers.TryGetValue(header.Id, out var assembler)) { // a new requestId has come in, start a new task to process it as it is received assembler = CreatePayloadAssembler(header); if (assembler != null) { _activeAssemblers.Add(header.Id, assembler); } return(assembler?.GetPayloadAsStream()); } return(null); }