These work well for one loss within a window, but not for more. This gets quite complicated. One potential problem is that the source might never see an undelayed packet. In any sliding window protocol, the source typically sends a new data packet whenever it receives an ack. Therefore, even if the first link is much faster than the slowest link on the path, making it possible for the source to send its data in bursts, the data packets will become spread out in time on the slow link, causing the acks to be spread out, causing the subsequent data packets to be spread out.
Congestion is less severe when data flows are steady than when they are bursty.
When network resources are shared by multiple TCP connections, there is a question of whether each connection gets a fair share of the resources. On the other hand, a path of ten 10 Mbps links can support either a single 10 Mbps spanning all ten links, or ten 10 Mbps connections each spanning one link. If storage is divided equally, then each TCP connection should get the same bandwidth-delay product, which is roughly proportional to the window size. There is no consensus on what fairness should mean. TCP's congestion control algorithms tend to give roughly equal windows to competing connections.