Open bwiercinski opened 3 years ago
Nice catch :) I think the problem here is that you can't use FunctionK
to transform a Future
into an IO
, as it doesn't use by-name parameters. And that's equally true for sttp client and any other usage.
At least documenting how to convert a future-based backend into any cast-effect-supported effect is certainly a good idea. I'd probably just implement the backend, though, as a backend wrapper, without using .mapK
(but copying & improving its implementation - the MappedKSttpBackend
).
Hello In my application I'm using AkkaHttpBackend which is
SttpBackend[Future,...]
. In the logic of the application I'm usingcats.effect.IO
. The sttp3 provides new syntax for my use case, which ismapK
, so I was happy to use that while I was migrating from sttp2 to sttp3. After mapping I haveSttpBackend[IO, Any]
, so my expectation was: if I invoke.send
then I have gotIO[Response[...]]
and since IO is referential transparent I can use the benefits of that in my application.The bellow example shows that it is not true:
after wrapping
ioBackend
usingDeferringSttpBackend
the test is passing.after thinking about it for a while I understand why it is happening, because
futureToIO
is impure.my questions are:
SttpBackend[IO,...]
I'm expecting it to be referential transparent.SttpBackend[Future, P]
toSttpBackend[IO, P]
"DeferringSttpBackend
in the public api so everyone can use it?