BitSharp.Network.Workers.PeerWorker.ConnectToPeer C# (CSharp) Метод

ConnectToPeer() приватный Метод

private ConnectToPeer ( IPEndPoint remoteEndPoint, bool isSeed ) : Task
remoteEndPoint System.Net.IPEndPoint
isSeed bool
Результат Task
        private async Task<Peer> ConnectToPeer(IPEndPoint remoteEndPoint, bool isSeed)
        {
            try
            {
                var peer = new Peer(remoteEndPoint, isSeed, isIncoming: false);
                try
                {
                    this.unconnectedPeersLock.Do(() =>
                        this.unconnectedPeers.Remove(remoteEndPoint));
                    this.pendingPeers.TryAdd(peer);

                    await ConnectAndHandshake(peer);
                    await PeerStartup(peer);

                    PeerHandshakeCompleted?.Invoke(peer);

                    this.pendingPeers.TryRemove(peer);
                    this.connectedPeers.TryAdd(peer);

                    return peer;
                }
                catch (Exception ex)
                {
                    logger.Debug(ex, $"Could not connect to {remoteEndPoint}");
                    DisconnectPeer(peer, ex);
                    return null;
                }
            }
            catch (Exception)
            {
                this.badPeers.Add(remoteEndPoint); //TODO
                this.unconnectedPeersLock.Do(() =>
                    this.unconnectedPeers.Remove(remoteEndPoint));
                throw;
            }
        }