def _connect_stack(self, stack):
        """
        Pass `stack` to ContextService, requesting a copy of the context object
        representing the last tuple element. If no connection exists yet,
        ContextService will recursively establish it before returning it or
        throwing an error.

        See :meth:`ansible_mitogen.services.ContextService.get` docstring for
        description of the returned dictionary.
        """
        try:
            dct = self.parent.call_service(
                service_name='ansible_mitogen.services.ContextService',
                method_name='get',
                stack=mitogen.utils.cast(list(stack)),
            )
        except mitogen.core.CallError:
            LOG.warning('Connection failed; stack configuration was:\n%s',
                        pprint.pformat(stack))
            raise

        if dct['msg']:
            if dct['method_name'] in self.become_methods:
                raise ansible.errors.AnsibleModuleError(dct['msg'])
            raise ansible.errors.AnsibleConnectionFailure(dct['msg'])

        self.context = dct['context']
        self.chain = CallChain(self, self.context, pipelined=True)
        if self._play_context.become:
            self.login_context = dct['via']
        else:
            self.login_context = self.context

        self.init_child_result = dct['init_child_result']
Pass `stack` to ContextService, requesting a copy of the context object
        representing the last tuple element. If no connection exists yet,
        ContextService will recursively establish it before returning it or
        throwing an error.

        See :meth:`ansible_mitogen.services.ContextService.get` docstring for
        description of the returned dictionary.