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);
        }