await는 lock을 놓고 기다린 뒤 신호 후 다시 획득해 반환합니다.
lock owner · 상태 검사/변경
lock release · Condition wait set
lock 재경쟁 · 재획득 후 반환
핵심: lock을 소유하지 않은 await·signal은 즉시 예외이므로 protocol 경계가 코드에 보여야 합니다.