strict mode
!= for typeof
catch errors in the resolution function properly
upgrade then/promise
v3.0.0