I've used them in many cases over the years. First one was a packet reader over a serial line. I used it to manage the lifecycle of a quotation process of annuity quotation on backend. There are many cases where an FSM is a good way to reason about what happens next. Model a state diagram but then instead of writing a lot of switch statements you can move to an implementation that matches the abstraction. In the UI it is very handy. People use Redux for statemanagment in the front end nut I find that you end with stuff all over the place. With the DSL the statemachine abstraction is preserved. I've added a visualisation model so you can even see if it still matches your original model.
A few other handy things are default actions and entry and exit actions.
Now I'm adding coroutine support so that it is easier to use in the case where the action is Async.