public async Task <byte[]> SerializeAsync <TPayload>(TPayload payload, bool isKey, string topic)
        {
            var subject    = GetSubjectName(topic, isKey);
            var serializer = GetSerializer <TPayload>();

            var schemaId = await _schemaRegistryClient.RegisterAsync(subject, serializer.ReaderSchema);

            var uintSchemaId = Convert.ToUInt32(schemaId);

            if (BitConverter.IsLittleEndian)
            {
                uintSchemaId = SwapEndianness(uintSchemaId);
            }

            using (var stream = new MemoryStream())
            {
                var sw = new BinaryWriter(stream);
                sw.Write((byte)0x0);
                sw.Write(uintSchemaId);
                sw.Flush();
                serializer.Serialize(stream, payload);
                stream.Seek(0, SeekOrigin.Begin);
                return(stream.ToArray());
            }
        }