Redux Thunk is middleware that allows you to return functions, rather than just actions, within Redux<sup>1</sup>. This allows for delayed actions, including working with promises.
The reason we use this middleware is for the reason that not all the actions we perform will be synchronus and some are bound to be non synchronous, like using axios to send a GET request. This will take a bit of time and simple redux does not take into to account this behaviour. So, Redux Thunk comes to the rescue by allowing us to dispatch actions asynchronously, so that we can allow these promises to get resolved.
Redux Thunk can be installed using `npm install redux-thunk --save` or `yarn add redux-thunk` with the command line. Because it is a Redux tool, you will also need to have Redux set up. Once installed, it is enabled using `applyMiddleware()`:
```javascript
import { createStore, applyMiddleware } from 'redux';