ClientChannel.ChannelMatchingTargetUri returns IClientChannel representing client channel instance with all properties (except TargetUrl) set to their default values. This is the very base interface type for all client channels (note that some of them do not expose a Timeout property at all).
If you need to fine-tune the ClientChannel instance then it might be more feasible to create it explicitly. F.e. in your case it would be
///self._clientChannel := ClientChannel.ChannelMatchingTargetUri(self._serverUrl);
var clientChannel := new IpHttpClientChannel();
clientChannel.TargetUrl := self._serverUrl;
clientChannel.Timeout := .....
self._clientChannel := clientChannel;
After the timer is elapsed the corresponding socket is commanded to be closed. Then it might take some time for the socket to actually close, especially on Mono or during a SSL handshake.
The code pauses its execution in the Socket.Connect method. Unfortunately .NET platform does not provide any way to manage the Socket connection timeout.
I’ll log an issue to investigate if it is possible to somehow work around this, however this might take time.