code: func (h *handler) handleResponse(msg *jsonrpcMessage) {
  	op := h.respWait[string(msg.ID)]
  	if op == nil {
  		h.log.Debug("Unsolicited RPC response", "reqid", idForLog{msg.ID})
  		return
  	}
  	delete(h.respWait, string(msg.ID))
  	// For normal responses, just forward the reply to Call/BatchCall.
  	if op.sub == nil {
  		op.resp <- msg
  		return
  	}
  	// For subscription responses, start the subscription if the server
  	// indicates success. EthSubscribe gets unblocked in either case through
  	// the op.resp channel.
  	defer close(op.resp)
  	if msg.Error != nil {
  		op.err = msg.Error
  		return
  	}
  	if op.err = json.Unmarshal(msg.Result, &op.sub.subid); op.err == nil {
  		go op.sub.start()
  		h.clientSubs[op.sub.subid] = op.sub
  	}
  }
docs: // handleResponse processes method call responses.