Why do we still have a callback if we return a promise? If it's for backward compatibility I suggest you make it optional like so:
```javascript
callback && callback()
```