I was Reading the Redux Docs I was a bit confused with createAsyncThunk
Yes it really does what its name suggests.
dispatch and getState as arguments, so you can orchestrate how other actions are dispatched, wait for asynchronous things, etc..createAsyncThunk does not replace thunk, it is a more concise way of writing a thunk. They typically follow the same pattern so createAsyncThunk automates that away. createAsyncThunk in fact requires the thunk middleware to be used, which is taken care of by the store setup from redux-toolkit (where createAsyncThunk comes from).