Parts/FlushRequestQueue.ps1

<#
.Synopsis
    Flushes the Request Queue
.Description
    Flushes the Queue of pending Invoke-ADORestApi calls.
#>

param(
# The name of the invoker command
[Parameter(Mandatory)]
[ValidateSet('Invoke-ADORestAPI','Invoke-GitHubRESTApi')]
[string]
$Invoker
)
if ((-not $t) -or (-not $progId)) {
    $c, $t, $progId = 0, $rq.Count, $(Get-Random)
}

while ($rq.Count) {
    $invokeSplat = $rq.Dequeue()

    if ($invokeParams) {
        $invokeSplat += $invokeParams
    }
    $invokeSplatUrl = $invokeSplat.Url, $invokeSplat.uri -ne $null
    if ("$invokeSplatUrl".StartsWith('/')) {
        $invokeSplatUrl = 
            @(
            "$server".TrimEnd('/')  # * The Server
            "/$organization"
            $invokeSplatUrl
            ) -join ''
        $invokeSplat.Remove('Url')
        $invokeSplat.Remove('Uri')                
        $invokeSplat.Url = $invokeSplatUrl
    }
    if ($ApiVersion -and -not $invokeSplat.QueryParameter.apiVersion) {
        if (-not $invokeSplat.QueryParameter) {
            $invokeSplat.QueryParameter = @{}
        }
        $invokeSplat.QueryParameter.'api-version' = $ApiVersion
    }

    $status = 
        if ($invokeSplat.Status) {
            $invokeSplat.Status
            $invokeSplat.Remove('Status')
        }
        elseif ($invokeSplat.Method) {
            $invokeSplat.Method
        } else 
        {
            "GET"
        }

    $activity =
        if ($invokeSplat.Activity) {
            $invokeSplat.Activity
            $invokeSplat.Remove('Activity')
        }
        elseif ($invokeSplatUrl) {
            $invokeSplatUrl
        } else
        {
            " "
        }

    if (-not $InvokeSplat.Property) {
        $InvokeSplat.Property = [Ordered]@{}
    }
    if ($organization -and -not $InvokeSplat.Property.Organization) {
        $InvokeSplat.Property.Organization = $organization
    }
    if ($ProjectID -and -not $InvokeSplat.Property.Organization) {
        $InvokeSplat.Property.ProjectID = $ProjectID
    }
    $c++
    $p = $c* 100/$t
    Write-Progress $status $activity -PercentComplete $p -Id $progId
    & $ExecutionContext.SessionState.InvokeCommand.GetCommand($Invoker, 'Function') @invokeSplat    
}
if ($c -eq $t) {
    Write-Progress $status $activity -Completed $progId
}