    private func _forget(_ observer: ConductionResourceObserver) {
       let oldPriority = _priority()
       _waitingBlocks = _waitingBlocks.filter { $0.id != observer }
+      _history = _history.filter { $0 != observer }
       _updatePriority(oldPriority: oldPriority)
    }
    

      let oldPriority = _priority()
      let waitingBlocks = _waitingBlocks.sorted { return $0.priority > $1.priority }
      _waitingBlocks = []
      _updatePriority(oldPriority: oldPriority)
      waitingBlocks.forEach { $0.block(resource) }
   }

   }
   
   private func _addObserver(observer: ConductionResourceObserver, priority: Int, completion: @escaping (_ resource: Resource?) -> Void) {
      guard !_history.contains(observer) else { return }

      let oldPriority = _priority()
      _waitingBlocks = _waitingBlocks.filter { $0.id != observer }
      _waitingBlocks.append((id: observer, priority: priority, block: completion))
      _updatePriority(oldPriority: oldPriority)
   }
