fix: reduce CPU usage by replacing busy loops with blocking/async waits #1755
| Job | Run time | 
|---|---|
| 9m 10s | |
| 8m 41s | |
| 7m 44s | |
| 9m 20s | |
| 8m 29s | |
| 10m 6s | |
| 59s | |
| 9m 21s | |
| 9m 8s | |
| 10m 0s | |
| 8m 35s | |
| 10m 30s | |
| 9m 57s | |
| 9m 40s | |
| 4m 36s | |
| 8m 52s | |
| 14m 0s | |
| 10m 5s | |
| 25s | |
| 32s | |
| 11m 31s | |
| 9m 41s | |
| 0s | |
| 3h 1m 22s | 
| Job | Run time | 
|---|---|
| 9m 10s | |
| 8m 41s | |
| 7m 44s | |
| 9m 20s | |
| 8m 29s | |
| 10m 6s | |
| 59s | |
| 9m 21s | |
| 9m 8s | |
| 10m 0s | |
| 8m 35s | |
| 10m 30s | |
| 9m 57s | |
| 9m 40s | |
| 4m 36s | |
| 8m 52s | |
| 14m 0s | |
| 10m 5s | |
| 25s | |
| 32s | |
| 11m 31s | |
| 9m 41s | |
| 0s | |
| 3h 1m 22s |