NAME
    Plack::Middleware::Timeout

SYNOPSIS
        my $app = sub { ... };

        Plack::Middleeare::Timeout->wrap(
            $app,
            timeout  => sub { ... } || 60,
            # optional callback to set the custom response 
            response => sub {
                my ($response_obj,$execution_time) = @_;

                $response_obj->code(HTTP_REQUEST_TIMEOUT);
                $response_obj->body( encode_json({
                    timeout => 1,
                    other_info => {...},
                }));

                return $plack_response;
            }
        );

DESCRIPTION
    Timeout any plack requests at an arbitrary time.

PARAMETERS
    timeout
        Determines how we're going to get the timeout value, either subref
        returning a value or any value accepted by subroutine defined in
        Time::HiRes::alarm, default 120 seconds.

    response
        Optional subroutine that receives two parameters, a Plack::Response
        object that we can further modify to fit our needs, if none is
        provided the middleware resolves to emitting a warning:

            'Terminated request for uri '%s' due to timeout (%ds)'

AUTHOR
    Tomasz Czepiel <tjmc@cpan.org>

LICENCE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

