When you claim something to be a monad, that has particular meaning for anyone who has studied monads in category theory or Monad in functional programming languages. As other commenters have been trying to explain to you: you’ve violated what it means for something to be a Monad.

JavaScript code should be serving the ideal of what Monad is; Monad should not be bent to serve what the JavaScript code is. Yet, this is what is happening.

I would take no issue with you pointing out that join for Identity has the same implementation as runIdentity (or unwrap, or whatever it is to be called). The problem is that you then conflate this with Monad, and that is simply not correct; there is no relationship.

A responsible discussion of Monad would distinguish the realities of JavaScript and particular JavaScript code from what Monad is and is about. This is done insufficiently throughout the article.