Promises implemented in TypeScript conforming to http://promises-aplus.github.io/promises-spec/