Wrap Promises around Node.js style callbacks