docs: def who(self, target):
          """
          Runs a WHO on a target
          Required arguments:
          * target - /WHO <target>
          Returns a dictionary, with a nick as the key and -
              the value is a list in the form of;
             [0] - Username
             [1] - Priv level
             [2] - Real name
             [3] - Hostname
          """
          with self.lock:
              self.send('WHO %s' % target)
              who_lst = {}
  
              while self.readable():
                  msg = self._recv(expected_replies=('352', '315'))
                  if msg[0] == '352':
                      raw_who = msg[2].split(None, 7)
                      prefix = raw_who[5].replace('H', '', 1).replace('*', '', 1)
                      channel = raw_who[0]
                      nick = raw_who[4]
                      if prefix == '~':
                          self.channels[channel]['USERS'][nick] = \
                             ['~', '', '', '', '']
                      elif prefix == '&':
                          self.channels[channel]['USERS'][nick] = \
                             ['', '&', '', '', '']
                      elif prefix == '@':
                          self.channels[channel]['USERS'][nick] = \
                             ['', '', '@', '', '']
                      elif prefix == '%':
                          self.channels[channel]['USERS'][nick] = \
                             ['', '', '', '%', '']
                      elif prefix == '+':
                          self.channels[channel]['USERS'][nick] = \
                             ['', '', '', '', '+']
                      else:
                          self.channels[channel]['USERS'][nick] = \
                             ['', '', '', '', '']
                      who_lst[raw_who[4]] = raw_who[1], prefix, \
                          raw_who[7], raw_who[2]
                  elif msg[0] == '315':
                      return who_lst