Tested this by adding `sleep(10)` to the `canAllocateLease` method of the preallocated host (this is to simulate the acquisition lock being held for large amounts of time). Then I ran
```
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do (bin/drydock lease --type host --attributes platform=linux &); done
```
and saw appropriate output:
```
june-linux-laptop:~/Projects/Phabricator/phabricator> for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do (bin/drydock lease --type host --attributes platform=linux &); done
june-linux-laptop:~/Projects/Phabricator/phabricator> Task yielded while acquiring 402...
< ... cut output ... >
Task yielded while acquiring 409...
Task yielded while acquiring 410...
Task yielded while acquiring 407...
Task yielded while acquiring 403...
Task yielded while acquiring 407...
Acquired Lease 411
Task yielded while acquiring 409...
Task yielded while acquiring 410...
Task yielded while acquiring 403...
Task yielded while acquiring 407...
Acquired Lease 401
Task yielded while acquiring 403...
Task yielded while acquiring 407...
Task yielded while acquiring 407...
Task yielded while acquiring 403...
Acquired Lease 409
Acquired Lease 410
Acquired Lease 407
Acquired Lease 403
```
Ran a Harbormaster build that did `Lease Host` while all of these leases were being allocated and saw the lease acquired in Harbormaster properly (with the build step yielding and continuing correctly when being picked back up again).