code: func (b *pubsubBroker) Subscribe(topic string, h broker.Handler, opts ...broker.SubscribeOption) (broker.Subscriber, error) {
  	options := broker.SubscribeOptions{
  		AutoAck: true,
  		Queue:   "q-" + uuid.New().String(),
  		Context: b.options.Context,
  	}
  
  	for _, o := range opts {
  		o(&options)
  	}
  
  	ctx := context.Background()
  	sub := b.client.Subscription(options.Queue)
  
  	if createSubscription, ok := b.options.Context.Value(createSubscription{}).(bool); !ok || createSubscription {
  		exists, err := sub.Exists(ctx)
  		if err != nil {
  			return nil, err
  		}
  
  		if !exists {
  			tt := b.client.Topic(topic)
  			subb, err := b.client.CreateSubscription(ctx, options.Queue, pubsub.SubscriptionConfig{
  				Topic:       tt,
  				AckDeadline: time.Duration(0),
  			})
  			if err != nil {
  				return nil, err
  			}
  			sub = subb
  		}
  	}
  
  	subscriber := &subscriber{
  		options: options,
  		topic:   topic,
  		exit:    make(chan bool),
  		sub:     sub,
  	}
  
  	go subscriber.run(h)
  
  	return subscriber, nil
  }
docs: // Subscribe registers a subscription to the given topic against the google pubsub api