code: def wait_for(self, new_state):
          
          if self._state == new_state:
              return
  
          if self._state > new_state:
              raise OrderedStateSkipped(new_state)
  
          fut = asyncio.Future(loop=self.loop)
          self._exact_waiters.append((new_state, fut))
          yield from fut
docs: Wait for an exact state `new_state` to be reached by the state
          machine.
  
          If the state is skipped, that is, if a state which is greater than
          `new_state` is written to :attr:`state`, the coroutine raises
          :class:`OrderedStateSkipped` exception as it is not possible anymore
          that it can return successfully (see :attr:`state`).