anchor.diff:  /// ## Parameters
   ///  - `setParams` - Function used to override the default parameters
   let HockeyApp (setParams: HockeyAppUploadParams -> HockeyAppUploadParams) =
  -    HockeyAppUploadDefaults
  +    let param = HockeyAppUploadDefaults
       |> setParams
  +
  +    param
       |> validateParams
       |> toCurlArgs
       |> fun args ->
           ExecProcessAndReturnMessages (fun p ->
               p.FileName <- "curl"
               p.Arguments <- (String.concat " " args)
  -        ) (TimeSpan.FromMinutes 2.)
  +        ) (TimeSpan.FromSeconds param.MaxTime)
       |> fun response ->
           let error = sprintf "Error while posting to HockeyApp.%sMessages: %s%sErrors: %s%s" nl (String.concat "; " response.Messages) nl (String.concat "; " response.Errors) nl
           match response.ExitCode with
  
positive.code:     if not (String.IsNullOrEmpty param.CommitSHA) then yield sprintf "-F \"commit_sha=%s\"" param.CommitSHA
      if not (String.IsNullOrEmpty param.BuildServerUrl) then yield sprintf "-F \"build_server_url=%s\"" param.BuildServerUrl
      if not (String.IsNullOrEmpty param.RepositoryUrl) then yield sprintf "-F \"repository_url=%s\"" param.RepositoryUrl
      if (param.ConnectTimeout > 0) then yield sprintf "-F \"connect-timeout=%i\"" param.ConnectTimeout
      if (param.MaxTime > 0) then yield sprintf "-F \"m=%i\"" param.MaxTime
      yield "https://upload.hockeyapp.net/api/2/apps/upload"
  }
  
  
negative.code:     RepositoryUrl = String.Empty
      DownloadStatus = DownloadStatusOption.NotDownloadable
      ConnectTimeout = 0
      MaxTime = 120. // 2 minutes by default
  }
  
  /// [omit]
  