anchor.diff:        me = response;
       })
       .catchError((error) {
  -      window.location.hash = "/signup";
  +      if (_api._endpoint.auth.token is String) {
  +        var details = new chrome.InvalidTokenDetails(token:_api._endpoint.auth.token);
  +        chrome.identity.removeCachedAuthToken(details)
  +        .whenComplete(() {
  +          window.location.hash = "/signup";
  +        });
  +      // for dartium
  +      } else {
  +        window.location.hash = "/signup";
  +      }
       }, test: (e) => e is APIRequestError)
       .whenComplete(() {
         completer.complete();
  
positive.code:   }
  
    void logout({String redirect_to: "/"}) {
      String revoke_url = _REVOKE_URL + _endpoint.auth.token.data;
      var completer = loading_completer();
      _http.get(revoke_url).then((_response) {
        _endpoint.auth.logout();
        redirect(redirect_to);
      })
      .whenComplete(() {
        completer.complete();
      });
    }
  }
  
negative.code: 
    GoogleCloudEndpointService(this.c, this._http) {
      try {
        var details = new chrome.TokenDetails(interactive:true);
        chrome.identity.getAuthToken(details)
        .then((token) {
          OAuth2 auth = new SimpleOAuth2(token);
          _postLogin(auth);
  