Use this method to persist the basket as a purchase order to the underlying stores.
SaveAsOrder conducts a two-phase commit using a distributed transaction coordinator.
If SaveAsOrder returns successfully, the underlying Basket is cleared. If Save is called immediately after this, a new Basket is created with the same name as the previous Basket.
When an exception is thrown from SaveAsOrder, the in-memory version of the basket is restored to the condition before SaveAsOrder was called. It is possible that any unsaved in-memory changes may be saved to storage as part of error handling.