def METHOD_NAME(self):
    """Gets the status of the job by querying the Python's future
    Returns:
        JobStatus: The current JobStatus
    Raises:
        JobError: If the future is in unexpected state
        concurrent.futures.TimeoutError: if timeout occurred.
    """
    # The order is important here
    if self._future.running():
        _status = JobStatus.RUNNING
    elif self._future.cancelled():
        _status = JobStatus.CANCELLED
    elif self._future.done():
        _status = JobStatus.DONE if self._future.exception() is None else JobStatus.ERROR
    else:
        # Note: There is an undocumented Future state: PENDING, that seems to show up when
        # the job is enqueued, waiting for someone to pick it up. We need to deal with this
        # state but there's no public API for it, so we are assuming that if the job is not
        # in any of the previous states, is PENDING, ergo INITIALIZING for us.
        _status = JobStatus.INITIALIZING
    return _status