docs: def schedule(self, api_call, bundle_id, bundle_desc, bundling_request,
                   kwargs=None):
          """Schedules bundle_desc of bundling_request as part of bundle_id.
  
          The returned value an :class:`Event` that
  
          * has a ``result`` attribute that will eventually be set to the result
            the api call
          * will be used to wait for the response
          * holds the canceller function for canceling this part of the bundle
  
          Args:
            api_call (callable[[object], object]): the scheduled API call.
            bundle_id (str): identifies the bundle on which the API call should be
              made.
            bundle_desc (gax.BundleDescriptor): describes the structure of the
              bundled call.
            bundling_request (object): the request instance to use in the API
              call.
            kwargs (dict): optional, the keyword arguments passed to the API call.
  
          Returns:
             Event: the scheduled event.
          """
          kwargs = kwargs or dict()
          bundle = self._bundle_for(api_call, bundle_id, bundle_desc,
                                    bundling_request, kwargs)
          elts = getattr(bundling_request, bundle_desc.bundled_field)
          event = bundle.extend(elts)
  
          # Run the bundle if the count threshold was reached.
          count_threshold = self._options.element_count_threshold
          if count_threshold > 0 and bundle.element_count >= count_threshold:
              self._run_now(bundle.bundle_id)
  
          # Run the bundle if the size threshold was reached.
          size_threshold = self._options.request_byte_threshold
          if size_threshold > 0 and bundle.request_bytesize >= size_threshold:
              self._run_now(bundle.bundle_id)
  
          return event