/**
  * @param SubscriptionInterface $subscription
  * @param array $options
  * @return SubscriptionInterface
  */
 public function deleteSubscription(SubscriptionInterface $subscription, $options = array())
 {
     try {
         if ($subscription->getAdapterName() !== $this->getAdapterName()) {
             throw new Braintree_Exception('Adapter mismatch');
         }
         $result = Braintree_Subscription::cancel($subscription->getSubscriptionId());
         if ($result->success) {
             $subscription->setSubscriptionSynced(false)->setStatus($result->subscription->status);
             $this->getLogger()->info('[Braintree][updateSubscription] Sucess', array_merge(array('subscription id' => $subscription->getId()), $this->serializeSubscription($subscription, $options)));
         } else {
             $this->getLogger()->error('[Braintree][updateSubscription] Error', array_merge(array('subscription id' => $subscription->getId()), Util::braintreeErrorsToArray($result->errors->deepAll())));
             $subscription->setErrors($result->errors->deepAll());
         }
     } catch (Braintree_Exception $e) {
         $this->getLogger()->error('[Braintree exception][cancelSubscription] ' . $e->getMessage());
     }
     return $subscription;
 }