- } // 0; # 0: do not retry if libgit2 or Inline::C are missing
- if ($gitish) { # Gcf2 active, {inflight} may be unset due to errors
- $GCF2C->{inflight} or
- $gitish = $GCF2C = PublicInbox::Gcf2Client::new();
- $oid .= " $git->{git_dir}";
- } else {
- $gitish = $git;
+ } // 0)) { # 0: do not retry if libgit2 or Inline::C are missing
+ $GCF2C->gcf2_async(\"$oid $git->{git_dir}\n", $cb, $arg);
+ \undef;
+ } else { # read-only end of git-cat-file pipe
+ $git->cat_async($oid, $cb, $arg);
+ $git->{async_cat} //= do {
+ my $self = bless { git => $git }, __PACKAGE__;
+ $git->{in}->blocking(0);
+ $self->SUPER::new($git->{in}, EPOLLIN|EPOLLET);
+ \undef; # this is a true ref()
+ };