Looks like incorrect order of definitions.
1. `onReject` will always be `(error: any) => void`. So order should be `Thanable<U>`, `U`, `void`.
2. `onReject` parameter should be optional only on less-specific version (which returns `void`)
3. `onFulfill` is also optional parameter
4. Typings should work correctly even if `onFulfill` argument would be `undefined`.