Currently void returns DBNull but reading ExecuteScalar docs a null value should be expected, after all there was no column or value at all. This is fixed in #5123
Relevant doc line:
The first column of the first row in the result set, or a null reference (Nothing in Visual Basic) if the result set is empty