Have do support promises as an alternative to the callback