def get_all_responses(self, receive_timeout_in_seconds=None):
        """
        Receive all available responses from the transport as a generator.

        :param receive_timeout_in_seconds: How long to block without receiving a message before raising
                                           `MessageReceiveTimeout` (defaults to five seconds unless the settings are
                                           otherwise).
        :type receive_timeout_in_seconds: int

        :return: A generator that yields (request ID, job response)
        :rtype: generator

        :raise: ConnectionError, MessageReceiveError, MessageReceiveTimeout, InvalidMessage, StopIteration
        """

        wrapper = self._make_middleware_stack(
            [m.response for m in self.middleware],
            self._get_response,
        )
        try:
            while True:
                with self.metrics.timer('client.receive.including_middleware', resolution=TimerResolution.MICROSECONDS):
                    request_id, response = wrapper(receive_timeout_in_seconds)
                if response is None:
                    break
                yield request_id, response
        finally:
            self.metrics.commit()
Receive all available responses from the transport as a generator.

        :param receive_timeout_in_seconds: How long to block without receiving a message before raising
                                           `MessageReceiveTimeout` (defaults to five seconds unless the settings are
                                           otherwise).
        :type receive_timeout_in_seconds: int

        :return: A generator that yields (request ID, job response)
        :rtype: generator

        :raise: ConnectionError, MessageReceiveError, MessageReceiveTimeout, InvalidMessage, StopIteration