<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def thread_with_callback(on_error, on_done, requete_with_callback):
 """ Return a thread emiting `state_changed` between each sub-requests. :param on_error: callback str -> None :param on_done: callback object -> None :param requete_with_callback: Job to execute. monitor_callable -> None :return: Non started thread """


    class C(THREAD):

        error = SIGNAL(str)
        done = SIGNAL(object)
        state_changed = SIGNAL(int, int)

        def __del__(self):
            self.wait()

        def run(self):
            try:
                r = requete_with_callback(self.state_changed.emit)
            except (ConnexionError, StructureError) as e:
                self.error.emit(str(e))
            else:
                self.done.emit(r)

    th = C()
    th.error.connect(on_error)
    th.done.connect(on_done)
    return th