golang builtin doesnt handle UTF BOM well . have to preprocess the io.Reader
It's also more general as there are other commonly-needed transformations that have an even weaker case for explicit support in the CSV library (charset conversion, dropping other bogus bytes, ...).