The Promise/A+ spec strongly suggests that the callbacks
given to then should be run asynchronously (meaning in the
next turn of the event loop), this module provides support for
doing so using the Mojo::IOLoop module.
Module authors should not care which event loop will be used but
instead should just the Promises module directly:
use Promises qw(deferred collect);
End users of the module can specify which backend to use at the start of
use Promises -backend => [Mojo];
<B>Note:B> If you are using Mojolicious with the EV event loop, then you
should use the Promises::Deferred::EV backend instead.