We await the predicate now. For synchronous predicates, nothing should change becase the await will finish before the next protocol message arrives (thanks to `makeWaitForNextTask`).
//utils/check_availability.js