This line makes me a little nervous. If device storage responds very slowly and the user starts recording a new video very quickly, I think that this._videoPath could have changed by the time this event handler fires.

I think it might be better to change the _waiting flag. Instead of making it a boolean, have it hold the file name that you're waiting for the change event on, and then reset it to null afterward.

Or, alternatively, I'd be tempted to put this entire event handler inside the stopRecording() function, and register a new handler for each video recorded.  (Then have the handler un-register itself after running, of course).