@web.asynchronous
    @gen.engine
    def delete(self, *args, **kwargs):
        # Create the model and fetch its data
        self.model = self.get_model(kwargs.get('id'))
        result = yield self.model.fetch()

        # If model is not found, return 404
        if not result:
            self.not_found()
            return

        # Stub to check for delete permissions
        if not self.has_delete_permission():
            self.permission_denied()
            return

        # Delete the model from its storage backend
        self.model.delete()

        # Set the status to request processed, no content returned
        self.set_status(204)
        self.finish()
This is a workaround for passing custom parameters (the parameter owner in our case)
dataset/ETHPy150Open gmr/tinman/tinman/handlers/mixins.py/ModelAPIMixin.delete--crossover with--dataset/ETHPy150Open 3bot/3bot/threebot/forms.py/make_user_parameter_formset