<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def product_request(self, product, subjects):
 """Executes a request for a single product for some subjects, and returns the products. :param class product: A product type for the request. :param list subjects: A list of subjects or Params instances for the request. :returns: A list of the requested products, with length match len(subjects). """

    request = self.execution_request([product], subjects)
    returns, throws = self.execute(request)

    # Throw handling.
    if throws:
      unique_exceptions = tuple({t.exc for _, t in throws})
      self._trace_on_error(unique_exceptions, request)

    # Everything is a Return: we rely on the fact that roots are ordered to preserve subject
    # order in output lists.
    return [ret.value for _, ret in returns]