Minimal async HTTP client for Rust on hyper and rustls, with per-phase timeouts and OpenTelemetry instrumentation