Makes sure that this async method is only running once at a time. When this method is running and it is tried
to call it another times, that call is "dropped" and it returns simply the result of the previous running call (waiting for it to complete first).
Makes sure that this async method is only running once at a time. When this method is running and it is tried to call it another times, that call is "dropped" and it returns simply the result of the previous running call (waiting for it to complete first).