It seems that it's possible to pass an empty string to IRCMessage.Parse so when you check to see if the first character is a : it crashes.
Also got a SocketException with the message "A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond" from the TcpClient constructor located on line 140 in IrcConnection.cs.
It seems that it's possible to pass an empty string to IRCMessage.Parse so when you check to see if the first character is a : it crashes.
Also got a SocketException with the message "A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond" from the TcpClient constructor located on line 140 in IrcConnection.cs.