Its sorting for the text, not a numerical representation.
I would advise you to create a date with the function date#([Field],'format') so that it creates the dual for the date your using.
In your case, the sort is correct, since 'Apr' < 'Aug' and so on.
After that, the sorting issue will be addressed since it will be using the numeric representation of the date to sort.
You can even sort by adding below expression to sort by expression:
Pick(Match(YearMonth,'2016-Apr','2016-May','2016-Jun','2016-July'),'1','2','3','4')...............So on for all the months
And Make it by Ascending.
You can even sort it by YearMonth directly in sort by expression