The reconnect window is there to try and restrict reconnects once the server has forgotten about the client.  If the ConnectionTimeout is less than the DisconnectTimeout and we're using it's value as the ReconnectWindow that means the LongPolling transport will pre-emptively force a disconnect prior to the server forgetting about it.

Ultimately the ConnectionTimeout is just there to force new long lasting requests without a reconnect.  It does not represent when the server has forgotten about the client though.

A restriction we could add to ensure functional ConnectionTimeout values is to verify on Set that ConnectionTimeout is <= DisconnectTimeout.  Thoughts?