Stop() can result in an exception thrown when it calls RemoveListener(), if the listener does not exist and the port is in use.
What happens: RemoveListener calls GetEPListener to retrieve the listener that it wants to remove. The listener does not exist, so GetEPListener creates it. The port is in use, and EndPointListener.CreateSocket() throws an exception.