The need to unsafely disconnect products within processProducts points to a second missing feature: you need to be able to say that a function maintains the disconnectedness of a particular parameter. If processProduct were declared this way, products would still be in its own region and could be safely transferred out.
Both of these are worth issue reports; they seem like common needs.