Might be more semantically clear to only remove the filter from the config if `Run` returns an error, i.e:

```go
    if filter, ok := foRunner.plugin.(Filter); ok {
            if err = filter.Run(foRunner, h); err != nil {
                    h.PipelineConfig().RemoveFilterRunner(foRunner.name)
            }
    } else if output, ok := ....
```

This should also let you remove the `if Globals().Stopping` check from within `RemoveFilterRunner`.