I think there is a bug with the reporting of the load state when the Microphone recording has just stopped. It will report loaded at first, then loading until it is really loaded.
I found that as a workaround you can add an additional yield to make it work for now.
Microphone.End(_deviceName);
// Insert a yield here as a workaround
yield return new WaitForSeconds(0.5f);
// The problematic area:
while (_clip.loadState == AudioDataLoadState.Loading)
yield return null;
I will look into this further and file a bug.