A transaction at the front of a pipeline can be canceled and restarted in a non-pipelined context if it hangs for a very long time - the concern is that the pipelining created a server or intermediary hang somewhere.
Two fixes are necessary to this logic:
1 - the pipeline position of the rescheduled transaction needs to be reset to 0 so that this timer does not apply the next time around. Before we switched SOLO transactions away from using nsHttpPipeline that happened as part of the pipeline scheduling, but now the old value is just inherited so it needs to be reset explicitly.
2 - NET_TIMEOUT needs to be added to the list of conditions for which pipeline response(0) will be retried.