Earlier quoted context omitted.
From TFA: > The problem is that we cannot trust code we cannot instrument. If a third-party binding makes HTTP calls through concrete functions, we have no way to add tracing, no way to inject timeouts tuned to our SLOs, no way to simulate partner outages in testing, and no way to explain the 400ms gap in a trace except by squinting at it and developing theories. So we write our own. More work upfront, but the client…
> If a third-party binding makes HTTP calls through concrete functions, we have no way to add tracing, no way to inject timeouts tuned to our SLOs, no way to simulate partner outages in testing, and no way to explain the 400ms gap in a trace Given that tracing etc. is IO, are they just threading IO through the entirety of all their Haskell code?
In any case, anywhere they’re doing HTTP calls they are already threading IO, so they don’t have to pay an additional cost.