code: func (h *handler) handleSubscribe(cp *callProc, msg *jsonrpcMessage) *jsonrpcMessage {
  	if !h.allowSubscribe {
  		return msg.errorResponse(ErrNotificationsUnsupported)
  	}
  
  	// Subscription method name is first argument.
  	name, err := parseSubscriptionName(msg.Params)
  	if err != nil {
  		return msg.errorResponse(&invalidParamsError{err.Error()})
  	}
  	namespace := msg.namespace()
  	callb := h.reg.subscription(namespace, name)
  	if callb == nil {
  		return msg.errorResponse(&subscriptionNotFoundError{namespace, name})
  	}
  
  	// Parse subscription name arg too, but remove it before calling the callback.
  	argTypes := append([]reflect.Type{stringType}, callb.argTypes...)
  	args, err := parsePositionalArguments(msg.Params, argTypes)
  	if err != nil {
  		return msg.errorResponse(&invalidParamsError{err.Error()})
  	}
  	args = args[1:]
  
  	// Install notifier in context so the subscription handler can find it.
  	n := &Notifier{h: h, namespace: namespace}
  	cp.notifiers = append(cp.notifiers, n)
  	ctx := context.WithValue(cp.ctx, notifierKey{}, n)
  
  	return h.runMethod(ctx, msg, callb, args)
  }
docs: // handleSubscribe processes *_subscribe method calls.