[REFACTOR] BaseModel#validate() works with promises