3025: Fixing condition.await race condition 

In `AwaitOperation.beforeRun()` it seems `lockStore.startAwaiting(...)` is called regardless of whether the await has already expired. `lockStore.startAwaiting(...)` expects a waiter to be present in the underlying condition. When expired (via `AwaitOperation.onWaitExpire()`) the waiter is removed from the condition. This causes the condition to throw the `IllegalStateException` because there is no waiter to run.

This fixes that by avoiding any work in `beforeRun()` if the await is already expired. Also including a unit test.