Remove redundant check. If obj is null, then is null, so not a function.
'Settled' is a nicer term for 'not pending anymore'. Since resolving might reject instead of fulfill, it technically settles as well.
Null out thenHandlers after settling to let them be GCd. Don't even bother adding post-settling thenHandlers to the queue.
Refactor resulting code duplication
Add documentation for bind