def __execute__(self, client, auth):
gen = iter(self)<EOL>request = next(gen)<EOL>while True:<EOL><INDENT>response = send(client, auth(request))<EOL>try:<EOL><INDENT>request = gen.send(response)<EOL><DEDENT>except StopIteration as e:<EOL><INDENT>return e.args[<NUM_LIT:0>]<EOL><DEDENT><DEDENT>
Default execution logic for a query,
        which uses the query's :meth:`~Query.__iter__`.
        May be overriden for full control of query execution,
        at the cost of reusability.

        .. versionadded:: 1.1

        Note
        ----
        You shouldn't need to override this method, except in rare cases
        where implementing :meth:`Query.__iter__` does not suffice.

        Parameters
        ----------
        client
            the client instance passed to :func:`execute`
        auth: ~typing.Callable[[Request], Request]
            a callable to authenticate a :class:`~snug.http.Request`

        Returns
        -------
        T
            the query result