Async / await based functions can initially seem confusing when starting with actions. Because lexically they appear to synchronous functions, it gives the impression that
@action applies to the entire function. Which is of course not the case, as async / await is just syntactic sugar around a promise based process. As a result,
@action only applies to the code block until the first await. And after each await a new asynchronous function is started, so after each await, state modifying code should be wrapped as action. This is where runInAction comes in handy again