reduxのcreateStore, applyMiddlewareのソースの

function createStore(reducer, preloadedState, enhancer) {
  //省略
  return enhancer(createStore)(reducer, preloadedState)
  //省略
}

function applyMiddleware(...middlewares) {
  return createStore => (...args) => {
  //省略
}

上記のcreateStore、applyMiddleware関数の動作がいまいち分かりません
これはcreateStoreを実行した際enhancerを実行
enhancer(applyMiddleware)がコールバックでcreateStoreを実行しreducerとpreloadedStateを引数にとり再度createStoreを実行している
といった感じで合っているのでしょうか?

該当ソースのリンクは以下になります
https://github.com/reactjs/redux/blob/master/src/createStore.js
https://github.com/reactjs/redux/blob/master/src/applyMiddleware.js