code: def _read_response(self, may_block=False):
          
          # wait for response to become available
          res = self._waitfor_set(yubikey_defs.RESP_PENDING_FLAG, may_block)[:7]
          # continue reading while response pending is set
          while True:
              this = self._read()
              flags = yubico_util.ord_byte(this[7])
              if flags & yubikey_defs.RESP_PENDING_FLAG:
                  seq = flags & 0b00011111
                  if res and (seq == 0):
                      break
                  res += this[:7]
              else:
                  break
          self._write_reset()
          return res
docs: Wait for a response to become available, and read it.