Series on change to clean the http client code a bit and add a first layer of retry and rate limiting capabilities
---
This have no reason to be a closure, so we extract it as a proper
function.
---
client: reorder some conditionnal
Let us put the simple case first and the longer one after it.
---
client: move `make_request` to be a method
This has not reason to be a closure, so let it not be a closure.
---
client: transforme the swhid to string earlier
This simplify the function we call in the loop, cannot hurt.
---
client: compute the client endpoin once and ealier
This make the user function simpler.
---
fixup! output: pick "summary" as the default
---
client: prepare for retry
---
client: add some basic error detection and rate limiting
We retry on error and we adjust to the `X-RateLimit` header the server
send us. This is quite basic, and has to struggle against the async
implementation of the request.
So further works should probably refactor the concurrency of the request
implementation before going further.
See inline documentation for details.
Better handling of ClientConnectionError are also needed.