def DispatchNotifications(self, timeout):
        current_time = self._mock_timer.time()
        if not self._responses:
            self._mock_timer.SetTime(current_time + timeout + 1)
            raise websocket.WebSocketTimeoutException()

        response, time = self._responses[0]
        if time - current_time > timeout:
            self._mock_timer.SetTime(current_time + timeout + 1)
            raise websocket.WebSocketTimeoutException()

        self._responses.pop(0)
        self._mock_timer.SetTime(time + 1)
        self._handler(response)
    def recv(self):
        if not self._responses:
            raise Exception('No more recorded responses.')

        response, time = self._responses.pop(0)
        current_time = self._mock_timer.time()
        if self._timeout is not None and time - current_time > self._timeout:
            self._mock_timer.SetTime(current_time + self._timeout + 1)
            raise websocket.WebSocketTimeoutException()

        self._mock_timer.SetTime(time)
        return response