docs: def wait_for_completion(self, operation_timeout=None):
          """
          Wait for completion of the job, then delete the job on the HMC and
          return the result of the original asynchronous HMC operation, if it
          completed successfully.
  
          If the job completed in error, an :exc:`~zhmcclient.HTTPError`
          exception is raised.
  
          Parameters:
  
            operation_timeout (:term:`number`):
              Timeout in seconds, when waiting for completion of the job. The
              special value 0 means that no timeout is set. `None` means that the
              default async operation timeout of the session is used.
  
              If the timeout expires, a :exc:`~zhmcclient.OperationTimeout`
              is raised.
  
              This method gives completion of the job priority over strictly
              achieving the timeout. This may cause a slightly longer duration of
              the method than prescribed by the timeout.
  
          Returns:
  
            :term:`json object` or `None`:
              The result of the original asynchronous operation that was
              performed by the job, from the ``job-results`` field of the
              response body of the "Query Job Status" HMC operation. That result
              is a :term:`json object` as described for the asynchronous
              operation, or `None` if the operation has no result.
  
          Raises:
  
            :exc:`~zhmcclient.HTTPError`: The job completed in error, or the job
              status cannot be retrieved, or the job cannot be deleted.
            :exc:`~zhmcclient.ParseError`
            :exc:`~zhmcclient.ClientAuthError`
            :exc:`~zhmcclient.ServerAuthError`
            :exc:`~zhmcclient.ConnectionError`
            :exc:`~zhmcclient.OperationTimeout`: The timeout expired while
              waiting for job completion.
          """
  
          if operation_timeout is None:
              operation_timeout = \
                  self.session.retry_timeout_config.operation_timeout
          if operation_timeout > 0:
              start_time = time.time()
  
          while True:
              job_status, op_result_obj = self.check_for_completion()
  
              # We give completion of status priority over strictly achieving
              # the timeout, so we check status first. This may cause a longer
              # duration of the method than prescribed by the timeout.
              if job_status == 'complete':
                  return op_result_obj
  
              if operation_timeout > 0:
                  current_time = time.time()
                  if current_time > start_time + operation_timeout:
                      raise OperationTimeout(
                          "Waiting for completion of job {} timed out "
                          "(operation timeout: {} s)".
                          format(self.uri, operation_timeout),
                          operation_timeout)
  
              time.sleep(1)