title: What is the point of Redux Promise and Redux Promise Middleware?
body: <p>I've searched high and low but can't find a clear answer.</p>
  
  <p>I've managed to wrap my head around the mechanics of Redux, <em>but</em> when I've come to the point of API calls and async action creators, I'm stuck with middleware in context of Promises.</p>
  
  <p>Can you help me get the mess right?</p>
  
  <p>Cotradictory pieces of the puzzle giving me headache:</p>
  
  <ol>
  <li><p>One of YT tutorials says that natively Redux dispatch method does not support promises returned from action creators--hence the need for Redux Promise library (I know the project is probably dead now and the continuation is Redux Promise Middleware).</p></li>
  <li><p>Dan says in "<a href="https://stackoverflow.com/questions/36577510/what-is-the-difference-between-redux-thunk-and-redux-promise">What is the difference between redux-thunk and redux-promise?</a>" I can use promises even without middleware--just manage them in the action creator.</p></li>
  <li><p>In other answers I found examples of using thunks where the action creator returned a... <strong>promise</strong> (later is was processed in the caller /<em>dispatch(myActionCreator(params).then(...)</em>/
  So a promise <strong>can</strong> be returned by a thunk <strong>WITHOUT</strong> any redux-promise lib..?</p></li>
  <li><p>In "<a href="https://stackoverflow.com/questions/36577510/what-is-the-difference-between-redux-thunk-and-redux-promise?rq=1">What is the difference between redux-thunk and redux-promise?</a>", the accepted answer states Redux Thunk returns functions, whereas Redux Promise returns promises.. what the heck?</p></li>
  </ol>
  
  <p>To wrap it up: what's the point of using Redux Promise or Redux Promise Middleware? Why does Redux alone not natively support promises?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>I've just realized that in point 3 above I overlooked <code>then()</code> being <strong>attached</strong> to <code>dispatch</code> and not <strong>included</strong> in <code>dispatch()</code> args.</p>