Always close http.Client objects
In https://github.com/dart-lang/dart_ci/blob/9e8bc64693bc56e939cfdd8d59b471505a189815/lib/src/fetch_changes.dart#L25
the client object is not closed... Generally, it's advisable to call client.close() in a finally statement..
An even better solution is create an object that is responsible for fetching changes, then store the http.Client as in instance variable on the object. You could close it when shutting down the service (but this is less important).
If you have a LOT of requests, and you open a TCP connection to GCP for each request, you'll risk running out of ports and end-up in WAIT_TIME state where your TCP connections are created, but sometimes takes minutes to establish because the kernel is waiting for ports to expire. This is less critical for low latency services, but it's rather hard to debug and diagnose.