I haven't added this in the past because it would add extra overhead to convert Task<DbDataReader> (that has to be returned from the overridden virtual method) to Task<MySqlDataReader> , because Task<T> is not covariant.
Then all code calling ExecuteReaderAsync on a MySqlCommand object would have an extra async state machine created (for this async method) just to implement a single cast. The overhead would dwarf the work that is performed.
Or, alternatively, if the default code path did return Task<MySqlDataReader>, then the virtual method would have to contain an extra "thunk" that upcast the result to DbDataReader, and consumers that use the DbCommand ADO.NET classes directly would suffer a performance penalty.
I think you could write an extension method to do this work (or continue casting the return value as you currently are) but I think the performance penalty that it would incur currently makes it infeasible to include on this API by default. (Hmm, maybe MySqlConnector could provide it as an extension method in a separate namespace so you have to explicit write using MySqlConnector.SlowConvenienceMethods to get it?)