private static async Task <KeyValueAccumulator> AccumulateForm(KeyValueAccumulator formAccumulator, MultipartSection section,
                                                                       ContentDispositionHeaderValue contentDisposition)
        {
            var key      = MultipartRequestHelper.RemoveQuotes(contentDisposition.Name.Value);
            var encoding = MultipartRequestHelper.GetEncoding(section);

            using (var streamReader = new StreamReader(
                       section.Body,
                       encoding,
                       detectEncodingFromByteOrderMarks: true,
                       bufferSize: BUFFER_SIZE,
                       leaveOpen: true)) {
                var value = await streamReader.ReadToEndAsync();

                if (string.Equals(value, "undefined", StringComparison.OrdinalIgnoreCase))
                {
                    value = string.Empty;
                }

                formAccumulator.Append(key, value);

                if (formAccumulator.ValueCount > FormReader.DefaultValueCountLimit)
                {
                    throw new InvalidDataException($"Form key count limit {FormReader.DefaultValueCountLimit} exceeded.");
                }
            }

            return(formAccumulator);
        }