returning an error already provide the information about `caught error`, so this is redundant information.  Think of it, if all the errors bubbling up add their little "caught error" to the string, the message printed will have a bunch of 

> caught error doing ...this, caught error doing ...that, ..., caught error doing ...there

Instead just use sentences of the form `"doing X, %v", err`:

```go
return fmt.Errorf("deleting pidfile '%s', %v", pidFilename, err)
```