I think you're looking for Mojo, then. Mojo comes with its own event system, so you don't need to change anything later if you decide to do something event-driven. The toolkit all installs as a single dist, so you don't have to worry about version conflicts. Everything in the Mojolicious dist follows a common pattern for objects and minimalism. It's a very capable web framework, but also my first choice for microservices. There's also the separate
dist which pairs with Mojo and lets you do long background processes without disturbing the web request processing.