use a pointer to manage data loader in DataModel
allow to defer delete until the object finishes to handle ongoing work
previously, it was being deleted by the destructor of DataModel even if running into another thread and possibly executing a slot