pullqueue.py: Do not call _load_artifact_done() on error

It's correct to call `_load_artifact_done()` if the pull was
unsuccessful because the artifact is not available on the server.
However, if an error is raised (e.g. job was terminated or an internal
error), we must not call `_load_artifact_done()` as no artifact object
is available.
diff --git a/src/buildstream/_scheduler/queues/pullqueue.py b/src/buildstream/_scheduler/queues/pullqueue.py
index 925ded0..ecff02c 100644
--- a/src/buildstream/_scheduler/queues/pullqueue.py
+++ b/src/buildstream/_scheduler/queues/pullqueue.py
@@ -21,6 +21,7 @@
 # Local imports
 from . import Queue, QueueStatus
 from ..resources import ResourceType
+from ..jobs import JobStatus
 from ..._exceptions import SkipJob
 
 
@@ -42,6 +43,10 @@
             return QueueStatus.SKIP
 
     def done(self, _, element, result, status):
+
+        if status is JobStatus.FAIL:
+            return
+
         element._load_artifact_done()
 
     @staticmethod