code: function get(callback) {
      var self = this;
      if (this.needsRefresh()) {
        this.refresh(function(err) {
          if (!err) self.expired = false; // reset expired flag
          if (callback) callback(err);
        });
      } else if (callback) {
        callback();
      }
    }
docs: Gets the existing credentials, refreshing them if they are not yet loaded
  or have expired. Users should call this method before using {refresh},
  as this will not attempt to reload credentials when they are already
  loaded into the object.
  
  @callback callback function(err)
  When this callback is called with no error, it means either credentials
  do not need to be refreshed or refreshed credentials information has
  been loaded into the object (as the `accessKeyId`, `secretAccessKey`,
  and `sessionToken` properties).
  @param err [Error] if an error occurred, this value will be filled