Duplicate confirmation emails were still being sent despite reported as being fixed in 8.x-2.0.
We now have the ability to store invoices in a subdirectory within "private".
Note that a breaking change had to be made to InvoiceFileManager::getInvoiceFile(). to allow skipping saving the invoice after setting the invoice file as this was causing the same pre/post transition events to be fired twice.