A polyfill for native ES6 Promises as close as possible (no extensions) to the strict spec definitions.