code: def _AcceptResponses(self, expected_header, info_cb, timeout_ms=None):
          
          while True:
              response = self.usb.BulkRead(64, timeout_ms=timeout_ms)
              header = bytes(response[:4])
              remaining = bytes(response[4:])
  
              if header == b'INFO':
                  info_cb(FastbootMessage(remaining, header))
              elif header in self.FINAL_HEADERS:
                  if header != expected_header:
                      raise FastbootStateMismatch(
                          'Expected %s, got %s', expected_header, header)
                  if header == b'OKAY':
                      info_cb(FastbootMessage(remaining, header))
                  return remaining
              elif header == b'FAIL':
                  info_cb(FastbootMessage(remaining, header))
                  raise FastbootRemoteFailure('FAIL: %s', remaining)
              else:
                  raise FastbootInvalidResponse(
                      'Got unknown header %s and response %s', header, remaining)
docs: Accepts responses until the expected header or a FAIL.
  
          Args:
            expected_header: OKAY or DATA
            info_cb: Optional callback for text sent from the bootloader.
            timeout_ms: Timeout in milliseconds to wait for each response.
  
          Raises:
            FastbootStateMismatch: Fastboot responded with the wrong packet type.
            FastbootRemoteFailure: Fastboot reported failure.
            FastbootInvalidResponse: Fastboot responded with an unknown packet type.
  
          Returns:
            OKAY packet's message.