Naming as per Foundation error code naming
Consistency
Reject the promise if it’s not main thread

The assert is preserved, so you catch the bug in debug mode. But in production the promise chain should fail.