anchor.diff:                      let mutable readSinceLastMeasure = 0L
   
                       let requestMsg = new HttpRequestMessage(HttpMethod.Get, downloadUri)
  -                    let! responseMsg = client.SendAsync(requestMsg, HttpCompletionOption.ResponseHeadersRead, t.Token) |> Async.AwaitTask
  +                    let! responseMsg = client.SendAsync(requestMsg, HttpCompletionOption.ResponseHeadersRead, requestTokenSource.Token) |> Async.AwaitTask
                       match responseMsg.StatusCode with
                       | HttpStatusCode.OK -> ()
                       | statusCode -> failwithf "HTTP status code was %d - %O" (int statusCode) statusCode
   
                       let! httpResponseStream = responseMsg.Content.ReadAsStreamAsync() |> Async.AwaitTask
  -                    httpResponseStream.ReadTimeout <- Timeout.Infinite;
  +                    httpResponseStream.ReadTimeout <- responseStreamTimeout;
   
                       let bufferSize = 1024 * 10
                       let buffer : byte [] = Array.zeroCreate bufferSize
  
positive.code:                     ensureDir targetFileName
  
                      use _trackDownload = Profile.startCategory Profile.Category.NuGetDownload
                      let! tok = Async.CancellationToken
                      let taskTimeout =
                          match Environment.GetEnvironmentVariable("PAKET_RESOLVER_TASK_TIMEOUT") with
                          | a when System.String.IsNullOrWhiteSpace a -> RequestTimeout
                          | a ->
                              match System.Int32.TryParse a with
                              | true, v -> v
                              | _ -> traceWarnfn "PAKET_RESOLVER_TASK_TIMEOUT is not set to an interval in milliseconds, ignoring the value and defaulting to %d" RequestTimeout
                                     (TimeSpan.FromMinutes 1.0).Milliseconds
                      let s = System.Threading.CancellationTokenSource.CreateLinkedTokenSource(tok)
                      let t = System.Threading.CancellationTokenSource.CreateLinkedTokenSource(tok)
                      tracefn "taskTimeout set to %d: " taskTimeout
                      s.CancelAfter taskTimeout//(TimeSpan.FromMinutes 1.0)
                      t.CancelAfter taskTimeout
  
                      let client = NetUtils.createHttpClient(!downloadUrl, source.Auth.Retrieve (attempt <> 0))
  
  
negative.code:                             tracefn "Still downloading from %O to %s (%d kbit/s, %s %%)" !downloadUrl targetFileName speed percent
                              readSinceLastMeasure <- 0L
                              lastSpeedMeasure.Restart()
  
                          // if there is no response for streamReadWriteTimeout milliseconds -> abort
                          let! bytes = httpResponseStream.ReadAsync(buffer, 0, bufferSize, streamReadWriteTokenSource.Token) |> Async.AwaitTaskWithoutAggregate
                          bytesRead := bytes
                          do! fileStream.WriteAsync(buffer, 0, !bytesRead, streamReadWriteTokenSource.Token) |> Async.AwaitTaskWithoutAggregate
                          readSinceLastMeasure <- readSinceLastMeasure + int64 bytes
                          pos <- pos + int64 bytes
  
  