code: function getItem(key, callback) {
          var self = this;
  
          // Cast the key to a string, as that's all we can set as a key.
          if (typeof key !== 'string') {
              window.console.warn(key +
                                  ' used as a key, but it is not a string.');
              key = String(key);
          }
  
          var promise = new Promise(function(resolve, reject) {
              self.ready().then(function() {
                  try {
                      var dbInfo = self._dbInfo;
                      var result = localStorage.getItem(dbInfo.keyPrefix + key);
  
                      // If a result was found, parse it from the serialized
                      // string into a JS object. If result isn't truthy, the key
                      // is likely undefined and we'll pass it straight to the
                      // callback.
                      if (result) {
                          result = _deserialize(result);
                      }
  
                      resolve(result);
                  } catch (e) {
                      reject(e);
                  }
              })["catch"](reject);
          });
  
          executeCallback(promise, callback);
          return promise;
      }
docs: Retrieve an item from the store. Unlike the original async_storage library in Gaia, we don't modify return values at all. If a key's value is `undefined`, we pass that value to the callback function.