Current implementation limitations:
Task effect is hardcoded. We should be able to adapt regardless of the effect type (so long as it's monadic).
- Uses promises for communication between producer and consumer. Maybe this is okay for, say, and Play converter. But there has to be a more catsy way to do this. Right now, my cat-fu is not strong enough to pull it off. Maybe in the future, I will figure it out. But if you are good with this kind of thing and want to take a stab at it, that would be great.
- Steals a
Future from the global execution context to kick off the producer asynchronously. A more catsy approach, as described in the last bullet point, should do away with this. I didn't want to add an implicit ExecutionContext argument here, as that seems like an implementation detail, and a rewrite of this method without it would not be backwards compatible. Maybe there is some way to pull this off with Task? I tried, couldn't figure it out
Current implementation limitations:
Taskeffect is hardcoded. We should be able to adapt regardless of the effect type (so long as it's monadic).Futurefrom the global execution context to kick off the producer asynchronously. A more catsy approach, as described in the last bullet point, should do away with this. I didn't want to add an implicitExecutionContextargument here, as that seems like an implementation detail, and a rewrite of this method without it would not be backwards compatible. Maybe there is some way to pull this off withTask? I tried, couldn't figure it out