Should we return the err from io.Copy instead?