title: Cannot read AsyncStorage value on React Native app startup
body: <p>I am using React Native with Redux. The following code is used to create the Redux store, and uses AsyncStorage to check if the user is logged in by checking the presence of an authToken.</p>
  
  <pre><code>import {createStore} from 'redux';
  import {persistStore} from 'redux-persist';
  
  async function getAuthToken() {
    return await AsyncStorage.getItem('authToken');
  }
  
  export function createStore(onCompletion:() =&gt; void):any {
    ...
  
    const store = createStore(
      reducer,
      {
        auth: {
          authenticated: !!getAuthToken()
        }
      },
      enhancer);
  
    persistStore(store, {
      storage: AsyncStorage,
    },
    onCompletion);
  }
  </code></pre>
  
  <p>The creation of the store:</p>
  
  <pre><code>export default class App extends Component {
  
    constructor(props) {
      super(props);
      this.state = {
        store: createStore(...),
      };
    }
  
    render() {
      return (
        &lt;Provider store={this.state.store}&gt;
          &lt;AppNavigator /&gt;
        &lt;/Provider&gt;
      );
    }
  }
  </code></pre>
  
  <p>The <code>authToken</code> value get correctly set once the user logs in, and is removed once the user logs out. But the authToken does not get persisted after the app is relaunched. The first call to <code>getAuthToken</code> always returns this junk value from <code>AsyncStorage</code>:</p>
  
  <blockquote>
    <p>{ _45: 0, _81: 0, _65: null, _54: null } </p>
  </blockquote>
  
  <p>Why could this be happening?</p>