When combining 2 errors

err = multierr.Append(reader.Close(), writer.Close()) 

When combining multiple errors

multierr.Combine(
	reader.Close(),
	writer.Close(),
	conn.Close(),
)

From deferred scopes

func sendRequest(req Request) (err error) {
	conn, err := openConnection()
	if err != nil {
		return err
	}
	defer func() {
		err = multierr.Append(err, conn.Close())
	}()
	// ...
}

Warning

If you’re modifying an error from inside a defer, you MUST use a named return value for that function.