Neredzot pārējo, ir pāris lietas, kas no sākuma jāpārbauda - vai nu recorder.state == 'inactive', tāpēc otrais if's neizpildās, vai arī isRecording kaut kur vēl tiek pārrakstīts.
Kā arī darbību secība - tas, ka kaut kas JS ir asinhrons, nenozīmē, ka tas tiek izpildīts asinhroni, jo JS tik un tā visu izpilda vienā pavedienā. Saliec logus, lai redzētu, kas kādā secībā tiek izpildīts, vai asinhronā daļa netiek aizkavēta dēļ kāda cita koda.