/// instances of `TorClient` is not recommended. Most programs should create a single `TorClient` centrally.
/// This type embodies an [`arti_client::TorClient`] and implements [`ureq::unversioned::transport::Connector`],
/// ### 2. Use [`Connector::with_tor_client`] to create a `Connector` with a specific `TorClient`.
/// ### 3. Use [`Connector::builder`] to create a `ConnectorBuilder` and configure a `Connector` with it.
/// A `Connector` can be used to retrieve an [`ureq::Agent`] with [`Connector::agent`] or pass the `Connector`
/// We highly advice only using `Resolver` instead of e.g `ureq`'s [`ureq::unversioned::resolver::DefaultResolver`] to avoid DNS leaks.
/// Selected [`ureq::tls::TlsProvider`]. Possibile options are `Rustls` or `NativeTls`. The default is `Rustls`.
/// Custom selected TlsProvider. Default is `Rustls`. Possible options are `Rustls` or `NativeTls`.
/// Resolves the host to an IP address using [`arti_client::TorClient::resolve`] avoiding DNS leaks.
/// Use [`Connector::resolver`] or pass the client from your `Connector` to create an instance of `Resolver`.
// Here we also bridge between the sync context `ureq` is usually called from and Arti's async I/O
// by blocking the provided runtime. Preferably a runtime only used for `arti` should be provided.
fn transmit_output(&mut self, amount: usize, _timeout: NextTimeout) -> Result<(), ureq::Error> {
/// The value `runtime` is only used if no [`arti_client::TorClient`] is configured using [`ConnectorBuilder::tor_client`].
// We highly advice only using `Resolver` instead of e.g `ureq`'s [`ureq::unversioned::resolver::DefaultResolver`] to avoid DNS leaks.
/// Returns a `HttpTransport` which implements trait [`ureq::unversioned::transport::Transport`].
/// Warning: This method creates a default [`arti_client::TorClient`]. Using multiple concurrent
/// instances of `TorClient` is not recommended. Most programs should create a single `TorClient` centrally.
/// Returns instance of [`Resolver`] implementing trait [`ureq::unversioned::resolver::Resolver`].
/// Equivalent to [`Connector::agent`] but allows the user to provide a custom [`ureq::config::Config`].
// complex to use the `==` operator or (Partial)Eq. So we compare the types of the individual properties instead.
// Some tests, especially those that create default `Connector` instances, or test the `ConnectorBuilder`,
// are not reliable when run on CI. We don't know why that is. It's probably a bug. TODO fix the tests!
// The default instance returned by `Connector::builder` should equal to the default `Connector`.
// `ConnectorBuilder::with_runtime` should return a `ConnectorBuilder` with the specified runtime set.
// `ConnectorBuilder::tor_client` should return a `Connector` with the specified `TorClient` set.
// Test if the `ureq` client configured with `Connector` uses Tor tor make the request using bare HTTP.
// Test if `get_default_tls_provider` correctly derives the TLS provider from the feature flags.
// Test if configuring the `Connector` using `get_default_tls_provider` correctly sets the TLS provider