New description
It is OK to block on the first ticket since we only block when we determine that nothing is free. However, we need to lengthen the wait a bit.
Old description
currently we do a 32ms wait on the first ticket we try. This is both (sometimes) too short for deadlock detection and also non-optimal because we might end up blocking when another ticket is currently free.
A better approach would be:
- Wait only the LAST ticket we try instead of the first (
@i == @{MaxCountParameter} - 1)
- Instead of passing
bool allowWait, we should pass in string? singleWaitExpression which will be something like expiry is never (inf) ? 250 : min(250, (1/3)(expiry - now))