use dynamic timeout based on transfer speed instead of fixed timeout for fragment downloading