Yes, you can reinvent wheels and avoid javascript best practices, and lose all benefits of async code control.
Promises are great, I totally agree (as long as they're A+ compliant). But they're not on every platform, and it's not (usually) worth building your own if it's not there.