+
+ my $sock = $conn->{sock};
+ if ($sock) {
+
+ # remove me from the active list
+ my $call;
+ if ($call = $conn->{call}) {
+ my $ref = $conns{$call};
+ delete $conns{$call} if $ref && $ref == $conn;
+ }
+ $conn->{delay} = Mojo::IOLoop->delay (
+# Mojo::IOLoop->delay (
+ sub {
+ my $delay = shift;
+ dbg("before drain $call");
+ $sock->on(drain => $delay->begin);
+ 1;
+ },
+ sub {
+ my $delay = shift;
+ _close_it($conn);
+ 1;
+ }
+ );
+ $conn->{delay}->wait;
+
+ $delqueue{$conn} = $conn; # save this connection until everything is finished
+ } else {
+ dbg((ref $conn) . " socket missing on $conn->{call}") if isdbg('connll');
+ _close_it($conn);
+ }
+}
+
+sub _close_it
+{
+ my $conn = shift;