code: function fetchOfflineLogin(credentials, serverOptions) {
      try {
          var value = localStorage().getItem(computeLocalStorageKey(serverOptions));
          if (!value) {
              return Q.resolve(undefined);
          }
          return cipher.decryptJson(credentials['password'], JSON.parse(value));
      }
      catch (error) {
          return Q.reject(error);
      }
  }
docs: reads response data from persistent storage.
  
  When there is no data in persitent store, the operation does NOT fail. In this case the
  resulting promise resolves to nil instead.
  
  @param credentials required for decryption.
  @param serverOptions identifying the server.
  @return {Promise<http.LoginResponse>} read from store, resolves to nil when there is no data,
  gets rejected when decryption fails.
  
  @internal Not part of public API, for library use only.