functions/Private/ErrorHandling/Trace-MgaCatch.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Trace-MgaCatch {
    param (
        $Throw
    )
    try {
        $WebResponse = $Throw.Exception.Response
        if ($WebResponse.StatusCode -eq 'TooManyRequests') {
            Trace-MgaThrottle -Seconds $WebResponse.Headers.retryafter.delta.Seconds
        }
        elseif ($WebResponse.StatusCode -eq 429) {
            Trace-MgaThrottle -Seconds $WebResponse.Headers['Retry-After']
        }
        else {
            throw $Throw
        }
    }
    catch {
        throw $_
    }
}