def exec_request(self, plugin_context):
        if len(self.plugins) == 0:
            return plugin_context

        current_context = copy(plugin_context)
        for plugin in self.plugins:
            try:
                new_context = plugin.on_request(current_context)
                current_context = copy(new_context)
            except AttributeError:
                logger.debug(
                    "Plugin {0} does not have on_request".format(
                        plugin.namespace["__file__"].split("/")[-1]))
        return current_context