You still don't need monads for any of this. Monads give you an ad-hoc polymorphic way of doing monadic actions.
Short circuiting on `Either` is a specific case of this. You can define your own EitherBind in any language.
eitherBind :: Either e a -> (a -> Either e b) -> Either e b
eitherBind (Left e) _ = Left e
eitherBind (Right a) f = f a
Now you can bind over Either to your heart's content without needing an encoding of Monads in your language.