private async Task <(bool, bool, Exception)> EnsureConnectionInternalAsync(MemberInfo member, CancellationToken token, CancellationToken cancellationToken)
        {
            Exception exception   = null;
            var       wasCanceled = false;

            using var source = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, token);

            try
            {
                var attempt = await EnsureConnectionAsync(member, source.Token).CfAwait();

                if (attempt)
                {
                    return(true, false, null);
                }
            }
            catch (OperationCanceledException)
            {
                wasCanceled = true;
            }
            catch (Exception e)
            {
                exception = e;
            }

            return(false, wasCanceled, exception);
        }
        public static void Encode(ClientMessage clientMessage, Hazelcast.Models.MemberInfo memberInfo)
        {
            clientMessage.Append(Frame.CreateBeginStruct());

            var initialFrame = new Frame(new byte[InitialFrameSize]);

            initialFrame.Bytes.WriteGuidL(UuidFieldOffset, memberInfo.Uuid);
            initialFrame.Bytes.WriteBoolL(LiteMemberFieldOffset, memberInfo.IsLiteMember);
            clientMessage.Append(initialFrame);

            AddressCodec.Encode(clientMessage, memberInfo.Address);
            MapCodec.Encode(clientMessage, memberInfo.Attributes, StringCodec.Encode, StringCodec.Encode);
            MemberVersionCodec.Encode(clientMessage, memberInfo.Version);
            MapCodec.Encode(clientMessage, memberInfo.AddressMap, EndpointQualifierCodec.Encode, AddressCodec.Encode);

            clientMessage.Append(Frame.CreateEndStruct());
        }