can we use a promise instead of a callback?