Add retries to `pub.dev/api/` calls (#199)

* Add retries to pub client calls

* Remove type

* Add changelog entry

* Also post workflow failures
diff --git a/.github/workflows/post_summaries.yaml b/.github/workflows/post_summaries.yaml
index 1548c99..cfca757 100644
--- a/.github/workflows/post_summaries.yaml
+++ b/.github/workflows/post_summaries.yaml
@@ -17,8 +17,7 @@
       pull-requests: write
     runs-on: ubuntu-latest
     if: >
-      github.event.workflow_run.event == 'pull_request' &&
-      github.event.workflow_run.conclusion == 'success'
+      github.event.workflow_run.event == 'pull_request'
     continue-on-error: true
     steps:
 
diff --git a/pkgs/firehose/CHANGELOG.md b/pkgs/firehose/CHANGELOG.md
index 8d80084..abf4207 100644
--- a/pkgs/firehose/CHANGELOG.md
+++ b/pkgs/firehose/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.33
+
+- Retry calls to pub.dev API.
+
 ## 0.3.32
 
 - Fix an issue validating pre-release git publishing tags (#176).
diff --git a/pkgs/firehose/lib/src/pub.dart b/pkgs/firehose/lib/src/pub.dart
index 9b875df..49f9e77 100644
--- a/pkgs/firehose/lib/src/pub.dart
+++ b/pkgs/firehose/lib/src/pub.dart
@@ -13,8 +13,8 @@
   http.Client get httpClient => _httpClient ??= http.Client();
 
   Future<bool> hasPublishedVersion(String name, String version) async {
-    var response =
-        await httpClient.get(Uri.parse('https://pub.dev/api/packages/$name'));
+    var uri = Uri.parse('https://pub.dev/api/packages/$name');
+    var response = await getCall(uri, retries: 3);
     if (response.statusCode != 200) {
       return false;
     }
@@ -26,6 +26,20 @@
         .contains(version);
   }
 
+  Future<http.Response> getCall(Uri uri, {required int retries}) async {
+    for (var i = 0; i < retries + 1; i++) {
+      try {
+        var response = await httpClient.get(uri);
+        return response;
+      } catch (e) {
+        if (i >= retries) {
+          rethrow;
+        }
+      }
+    }
+    throw AssertionError('This should be unreachable');
+  }
+
   void close() {
     _httpClient?.close();
   }
diff --git a/pkgs/firehose/pubspec.yaml b/pkgs/firehose/pubspec.yaml
index 04cde48..28902f9 100644
--- a/pkgs/firehose/pubspec.yaml
+++ b/pkgs/firehose/pubspec.yaml
@@ -1,6 +1,6 @@
 name: firehose
 description: A tool to automate publishing of Pub packages from GitHub actions.
-version: 0.3.32
+version: 0.3.33
 repository: https://github.com/dart-lang/ecosystem/tree/main/pkgs/firehose
 
 environment: