this is actually defined in the promises spec. see section 1 of 
http://promises-aplus.github.io/promises-spec/