Add: ECMAScript 6 promises (1/2): foundations