//=========================================================
        // Peer eventing
        public Task PeerVentAsync(TransactionContext tcontext, CancellationToken token = default(CancellationToken))
        {
            try
            {
                SeekPosition start = new SeekPosition();
                if (peerOptions.Newest != null)
                {
                    start.Newest = new SeekNewest();
                }
                else if (peerOptions.StartEventsBlock != null)
                {
                    start.Specified = new SeekSpecified {
                        Number = (ulong)peerOptions.StartEventsBlock.Value
                    };
                }
                else
                {
                    start.Newest = new SeekNewest();
                }

                //   properties.

                Envelope envelope = ProtoUtils.CreateSeekInfoEnvelope(tcontext, start, new SeekPosition {
                    Specified = new SeekSpecified {
                        Number = (ulong)peerOptions.StopEventsBlock
                    }
                }, SeekInfo.Types.SeekBehavior.BlockUntilReady, clientTLSCertificateDigest);
                return(ConnectEnvelopeAsync(envelope, token));
            }
            catch (CryptoException e)
            {
                throw new TransactionException($"{ToString()} error message {e.Message}", e);
            }
        }