I think throwing an error is better than silently proceeding. If the user passes in a buffer, they think they have valid metadata. Better they get an exception and fix their code if this is not the case.