Promises: noted that then's callback is optional