Problém s FileUpload v BusinessPack.Controls

Ahoj, mám problém při použití FileUpload komponenty z DotVVM.BusinessPack.Controls.

BusinessPack verzi FileUpload používám abych měl podporu pro upload dragnutím souboru. Mám FileUpload v nastavení na pouze upload jednoho souboru s událostí UploadCompleted, takto:

<bp:FileUpload Data="{value: UploadData}" AllowedFileTypes=".csv, .xlsx" AllowMultipleFiles="false" MaxFileSize="50" GenericErrorText="Import file upload error." UploadCompleted="{command: UploadCompleted()}" />

Při uploadu drágnutím souboru (nikoliv přes SelectFilesButton) se občas (náhodně) stane, že soubor při vyvolání události UploadCompleted vrací IsUploaded = false přítom pro malé soubory (např. 120 bajtů !!!).

Nejde to moc simulovat, ale zkoumal jsem čím je to způsobeno, a podle mě je chyba v souvislosti s knockout observable (kterému ale moc nerozumím) vlastnosti uploadData.Files. Stane se, že v onUploadStart se soubor nastaví přes setState, ale při onUploadComplete se v this.uploadData.Files.peek() ještě vrací prázdná kolekce (ale ve .state soubor je). Viz obrázek z ladění.

Výsledkem je, že se soubor nenajde a jde to do té větve s Matching file was not found a ve view modelu zůstane IsUploaded nastaven na false.

Asi by pomohlo dát tam volání onUploadComplete ještě přes settimeout., nebo nějak vynutit ten observable, aby už vracel správnou hodnotu.

Mně se to teda nepovedlo replikovat, asi mi ten server odpovídá moc pomalu. Race conditions tam ale samozřejmě jsou, přesně je zvýrazněné na screenshotu, tak jsem vyrobil patch. Řešením je spíš sáhnout na ten state přímo, místo volání .peek() a ne až uvnitř smyčky.

Díky za detailní bug report!

Díky.
Můžu pak ověřit, že to bude OK.
Jak se dostanu k patchi?