If I understand correctly:
The successful return value when incorrectly passed an asynchronous handle exists for backward compatibility.
The inability to behave correctly when passed an asynchronous handle exists because there is no good business reason to fix it.