A lightweight HTTP client built on fetch with automatic retries,
configurable timeouts, and rate-limit handling via Retry-After.
The entry point is WebClient. Call WebClient.create to get a
client with defaults, then chain withBaseUrl,
withHeaders, withTimeout,
and withRetry to configure it. Each HTTP method
returns a Task so you can chain .map, .recover, and .retry
before calling .run().