При use warnings FATAL => ... варнинги конвертируются в эксепшны. И, как следствие, их можно обработать eval`ом и другими подобными инструментами.
Т.е. в моём примере нет никакой ошибки внутри Perl. Просто оработчик then в Future заевален. И это исключение кладётся в промис. Но это ооочень неочевидно. Вроде как с FATAL должно быть лучше, но получается хуже.
Ну, perl обещает, что да, warn заменяется на die. :) Но ожидание разработчиков, что с use warnings FATAL => xxx будет лучше, чем с просто use warnings xxx, но это не так.