@@ -0,0 +1,13 @@
+class Unsubscriber
+  def initialize(subscription)
+    @subscription = subscription
+  end
+
+  def process
+    Subscription.transaction do
+      @subscription.destroy
+      stripe_user = Stripe::Customer.retrieve(@subscription.stripe_customer)
+      stripe_user.cancel_subscription
+    end
+  end
+end
I think the code needs to raise an error to have the `transaction` block roll back. Does `stripe_user.cancel_subscription` raise an error if it fails?