add doc for .promise()