In that case, perhaps tryAcquireAndRun ought to return its maxConcurrent when the limit is exceeded, or generate the error message itself.