Keep the sequential nature while updating the UI of the progress of the HTTP request
Good you have a BackgroundWorker. If I understood correctly, let's say you want to update a button, whether to enable it or not. you can use this:

delegate void EnableButton(Button b, bool enable);
public void ActuallyEnableButton(Button b, bool enable)
{
    if (b.InvokeRequired)
    {
        EnableButton del = ActuallyEnableButton;
        b.Invoke(del, new object[] { b, enable });
        //in some cases add "return" statement
    }
    b.Enabled = enable;
}


Call ActuallyEnableButton(btn, true) for example, inside DoWork event of BackgroundWorker.

This applies to Label, TextBox, ComboBox, ListView, ProgressBar, etc. No need to use this code if you want to update ToolStripStatusLabel and ToolStripProgressBar.

Hope this helped.