docs: def follow(self, auth_secret, followee_username):
          """Follow a user.
  
          Parameters
          ----------
          auth_secret: str
              The authentication secret of the logged-in user.
          followee_username: str
              The username of the followee.
  
          Returns
          -------
          bool
              True if the follow is successful, False otherwise.
          result
              None if the follow is successful, a dict containing
              the error string with the key ERROR_KEY otherwise.
  
          Note
          ----
          Possible error strings are listed as below:
  
          -  ERROR_NOT_LOGGED_IN
          -  ERROR_FOLLOWEE_NOT_EXIST_FORMAT.format(followee_username)
          -  ERROR_FOLLOW_YOURSELF_FORMAT.format(followee_username)
          """
          result = {pytwis_constants.ERROR_KEY: None}
  
          # Check if the user is logged in.
          loggedin, userid = self._is_loggedin(auth_secret)
          if not loggedin:
              result[pytwis_constants.ERROR_KEY] = pytwis_constants.ERROR_NOT_LOGGED_IN
              return (False, result)
  
          with self._rc.pipeline() as pipe:
              # Check if the followee exists.
              while True:
                  try:
                      # Put a watch on the Hash 'users': username -> user-id, in case that
                      # other clients are modifying the Hash 'users'.
                      pipe.watch(pytwis_constants.USERS_KEY)
                      followee_userid = pipe.hget(pytwis_constants.USERS_KEY, followee_username)
                      if followee_userid is None:
                          result[pytwis_constants.ERROR_KEY] = \
                              pytwis_constants.ERROR_FOLLOWEE_NOT_EXIST_FORMAT.\
                                              format(followee_username)
                          return (False, result)
                      elif followee_userid == userid:
                          result[pytwis_constants.ERROR_KEY] = \
                              pytwis_constants.ERROR_FOLLOW_YOURSELF_FORMAT.format(followee_username)
                          return (False, result)
  
                      break
                  except WatchError:
                      continue
  
              # Update the two zset 'followers:[followee_username]' and 'following:[username]'.
              follower_zset_key = pytwis_constants.FOLLOWER_KEY_FORMAT.format(followee_userid)
              following_zset_key = pytwis_constants.FOLLOWING_KEY_FORMAT.format(userid)
              unix_time = int(time.time())
              pipe.multi()
              pipe.zadd(follower_zset_key, unix_time, userid)
              pipe.zadd(following_zset_key, unix_time, followee_userid)
              pipe.execute()
  
          return (True, result)