def METHOD_NAME(self, fraction, msg_id):
    tasks = self._msg_id_to_tasks.get(msg_id, ())
    cancel = not any([task.progress(fraction) for task in tasks])
    if cancel:
        for task in self._msg_id_to_tasks.get(msg_id, ()):
            if not hasattr(task, '_server_side_cancel'):
                task._server_side_cancel = False
            if not task._server_side_cancel:
                cancel_msg = {'command': 'cancel', 'cancel_msg_id': msg_id}
                self._send_and_forget(cancel_msg)
                task.reject(vaex.execution.UserAbort("Progress returned false"))