ES6-compatible and Promises/A+ implementation for Node.js and browsers