that's a good generalization but has one small thing missing.
The main benefit of a monad is composition. It allows a programmer to chain computation and put some logic in the chaining. It's the difference between
f(g(h(x)))
and h(x).then(g).then(f)
the '.then' method has some inbuilt logic, for to ability to add that logic we 'embellish' the return type of h (or put it in a container like Promise<>).To equate it to java's Optionals, the flatMap is a good example, it takes an optional and applies some logic and decides to call the second function.
After many such articles, my main -- very generalised, I'm aware -- conclusion is that monad is basically a programming construct that a) contains some data and b) has some associated operations to be performed on that data.
Basically, a monad is an object.