[REFACTOR] BaseModel#save() works using promises