title: Cancel All Subscriptions and Asyncs in the componentWillUnmount Method, how?
body: <p>I'm getting an error message due to an async method issue. In my terminal I'm seeing:</p>
  
  <pre><code>Warning: Can't call setState (or forceUpdate) on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
  - node_modules/fbjs/lib/warning.js:33:20 in printWarning
  - node_modules/fbjs/lib/warning.js:57:25 in warning
  - node_modules/react-native/Libraries/Renderer/ReactNativeRenderer-dev.js:12196:6 in warnAboutUpdateOnUnmounted
  - node_modules/react-native/Libraries/Renderer/ReactNativeRenderer-dev.js:13273:41 in scheduleWorkImpl
  - node_modules/react-native/Libraries/Renderer/ReactNativeRenderer-dev.js:6224:19 in enqueueSetState
  - node_modules/react/cjs/react.development.js:242:31 in setState
  * router/_components/item.js:51:16 in getImage$
  - node_modules/regenerator-runtime/runtime.js:62:44 in tryCatch
  - node_modules/regenerator-runtime/runtime.js:296:30 in invoke
  - ... 13 more stack frames from framework internals
  </code></pre>
  
  <p>I noticed it's specifically pointing out the <code>getImage$</code></p>
  
  <p>Here's the code I'm using for that section:</p>
  
  <pre><code>export default class extends Component {
      constructor(props) {
          super(props);
          const { item } = props
  
          const bindThese = { item }
          this.boundActionCreators = bindActionCreators(bindThese)
  
          this.state = {
              image: require('../../static/logo.png'),
              ready: false,
              showOptions: this.props.showOptions
          }
  
          this.getImage = this.getImage.bind(this)
          this.renderNotAdmin = this.renderNotAdmin.bind(this)
          this.renderAdmin = this.renderAdmin.bind(this)
          this.handleOutOfStock = this.handleOutOfStock.bind(this)
      }
  
      async getImage(img) {
          let imgUri = await Amplify.Storage.get(img)
          let uri = await CacheManager.get(imgUri).getPath()
  
          this.setState({
              image: { uri },
              ready: true
          })
      }
  
      componentDidMount() {
          this.getImage(this.props.item.image)
      }
  </code></pre>
  
  <p>I'm trying to figure out how to use a <code>componentWillUnmount</code> with this async method. How do I go about it?</p>
  
  <p>Thanks!</p>