DOM Promise and Promises/A+ implementation for Node.js and browsers