def handle_in_initial_queue
      if state_machine.initial_queue.to_s == Dispatch::Queue.main.to_s
        handle_in_source_state
      else
        state_machine.initial_queue.async do
          handle_in_source_state
        end
      end
    end
def handle_in_initial_queue
      if state_machine.initial_queue.to_s == Dispatch::Queue.main.to_s
        handle_in_source_state
      else
        state_machine.initial_queue.async do
          handle_in_source_state
        end
      end
    end
This makes sure that state entry/exit and transition actions are
 called within the initial queue/thread.