Pretty simple question:
int retryAttempts = 3;
retry:
try {
await getSemaphore();
throw new Exception();
}
catch {
if (0 > retryAttempts--) {
await Task.Delay(5000);
goto retry;
}
return;
}
finally {
releaseSemaphore();
}
In this example, will the semaphore be released one or three times?