NAME
    "CPS::Governor::IOAsync" - use IO::Async with CPS

SYNOPSIS
     use CPS qw( gkforeach );
     use CPS::Governor::IOAsync;

     use IO::Async::Loop;

     my $loop = IO::Async::Loop->new;

     my $gov = CPS::Governor::IOAsync->new( loop => $loop );

     gkforeach( $gov, [ 1 .. 10 ],
        sub {
           my ( $item, $knext ) = @_;

           $loop->do_something( on_done => $knext );
        },
        sub { $loop->loop_stop },
     );

     $loop->loop_forever;

DESCRIPTION
    This CPS::Governor allows functions using it to defer their re-execution
    by using the IO::Async::Loop "later" method, meaning it will interleave
    with other IO operations performed by "IO::Async".

CONSTRUCTOR
  $gov = CPS::Governor::IOAsync->new( %args )
    Returns a new instance of a "CPS::Governor::IOAsync" object. Requires
    the following argument:

    loop => IO::Async::Loop
            Reference to the "IO::Async::Loop" object.

    Additionally may take any other arguments defined by the
    CPS::Governor::Deferred class.

AUTHOR
    Paul Evans <leonerd@leonerd.org.uk>