add enum validation
log error if no callback is supplied to `done`/`exec`