def METHOD_NAME(self, topic, feed, hub=None, callback=None,
              lease_seconds=None, force_retry=False):
    if hub is None:
        hub = self._get_hub(topic)
    if hub is None:
        raise TypeError('hub cannot be None if the feed does not provide it')
    if lease_seconds is None:
        lease_seconds = getattr(settings, 'PUBSUBHUBBUB_LEASE_SECONDS',
                               DEFAULT_LEASE_SECONDS)
    feed = Feed.get_by_id(feed.id)
    subscription, created = self.get_or_create(feed=feed)
    signals.pre_subscribe.send(sender=subscription, created=created)
    subscription.set_expiration(lease_seconds)
    if len(topic) < 200:
        subscription.topic = topic
    else:
        subscription.topic = feed.feed_link[:200]
    subscription.hub = hub
    subscription.save()
    if callback is None:
        callback_path = reverse('push-callback', args=(subscription.pk,))
        callback = 'https://' + settings.PUSH_DOMAIN + callback_path
        # callback = "https://push.newsblur.com/push/%s" % subscription.pk # + callback_path
    try:
        response = self._send_request(hub, {
            'hub.mode'          : 'subscribe',
            'hub.callback'      : callback,
            'hub.topic'         : topic,
            'hub.verify'        : ['async', 'sync'],
            'hub.verify_token'  : subscription.generate_token('subscribe'),
            'hub.lease_seconds' : lease_seconds,
        })
    except (requests.ConnectionError, requests.exceptions.MissingSchema):
        response = None
    if response and response.status_code == 204:
        subscription.verified = True
    elif response and response.status_code == 202: # async verification
        subscription.verified = False
    else:
        error = response and response.text or ""
        if not force_retry and 'You may only subscribe to' in error:
            extracted_topic = re.search("You may only subscribe to (.*?) ", error)
            if extracted_topic:
                subscription = self.METHOD_NAME(extracted_topic.group(1), 
                                              feed=feed, hub=hub, force_retry=True)
        else:
            logging.debug(u'   ---> [%-30s] ~FR~BKFeed failed to subscribe to push: %s (code: %s)' % (
                          subscription.feed.log_title[:30], error[:100], response and response.status_code))
    subscription.save()
    feed.setup_push()
    if subscription.verified:
        signals.verified.send(sender=subscription)
    return subscription