waitForIdle() deadlock

waitForIdle() could be called synchronized, which would prevent the idle
state from occuring