#!/usr/bin/perl use strict; use warnings; use Coro; use Coro::AnyEvent; use AnyEvent::CouchDB; use Data::Dump 'pp'; my $couch = couch(); my $bad = couch('http://bad/'); my $done = AnyEvent->condvar; sub p(&) { $done->begin; my $code = shift; my $data; eval { $data = $code->(); }; if ($@) { print $@, "\n"; } else { print pp($data), "\n"; } $done->end; } async { print "hello, world\n" }; for (1 .. 4) { async { p { ($couch->info->recv) } }; async { p { ($couch->all_dbs->recv) } }; async { p { ($bad->info->recv) } }; async { p { ($bad->all_dbs->recv) } }; } async { print "hello, again, world\n" }; async { print "*** please be patient, and let the bad requests timeout. ***\n" }; async { $done->recv; print "----\n"; print "Did you see how the bad requests didn't stop the good requests?\n"; exit; }; schedule;