Removes the async logic block implementation. Why? Because async logic blocks were a bad idea to begin with. Their whole existence is a design error on my part — there is very little utility to a state machine that blocks input processing while long-running tasks are executing. By blocking input processing, user interfaces cannot be responsive. So, away it goes.
A future PR can address removing all the unneeded abstractions between Logic and LogicBlock, etc., now that there is just one, canonical logic block implementation.
This also removes some dependencies from LogicBlocks that it wasn't using. Whoops!
Removes the async logic block implementation. Why? Because async logic blocks were a bad idea to begin with. Their whole existence is a design error on my part — there is very little utility to a state machine that blocks input processing while long-running tasks are executing. By blocking input processing, user interfaces cannot be responsive. So, away it goes.
A future PR can address removing all the unneeded abstractions between
Logic
andLogicBlock
, etc., now that there is just one, canonical logic block implementation.This also removes some dependencies from LogicBlocks that it wasn't using. Whoops!