Whoa. That's a surprising reaction. I think you might be missing something 
significant about how async works to think that.

> Sadly, your example does not work for me, even with tweaks, as the most 
> important part proc newMyState cannot work, as it couldn't be able to return 
> anything else aside from Future[T] or Future[void]

Why is this a problem? The procedure does async operations, so it must return a 
future. You can hack around and not do that, but then your procedure becomes 
blocking.

> What is even worse: even if that would work it would kind of defeat the 
> purpose of wrapping the procedures in the first place, as I wanted to 
> simplify them first.

Perhaps it would help if you explained what you are doing at a high level in 
some more detail. What are you trying to simplify? Are you writing a library on 
top of redis that makes certain operations simpler?

> If I have to do something like waitFor state.rsearch("test") in the final 
> code, anyway, then there is no point in wrapping everything.

Again, that procedure performs async operations, so it must return a future. In 
a non-async context you have two choices for what to do with a future:

  * Block until it completes: `waitFor`
  * Let it run in the "background": `asyncCheck`



If you were using this `rsearch` proc inside of another async proc then you'd 
be able to `await` it (or also run it in the background via `asyncCheck`).

Please don't give up on async. Making your code synchronous will not get you 
far.

Reply via email to