There are a number of different state machine abstractions in use in Chromium. The one I'm most familiar with is the "DoLoop" pattern used in the network stack:
https://source.chromium.org/chromium/chromium/src/+/main:net/docs/code-patterns.md;l=38?q=file:net%2Fdocs%2Fcode-patterns.md%20DoLoop
My concern with this FiniteStateMachine<> abstraction is that it generates a lot of code. We need to be careful with code size in Chromium as it runs on platforms with limited resources. It also appears to silently ignore unexpected messages, which could make debugging hard. From an efficiency standpoint, the fact that it allocates memory on every state transition makes it unsuitable in cases like parsers where state transitions need to be lightweight.
Personally, after a number of bad experiences with state machines, I prefer not to use them when conventional control flow is an option.