code: func (c *Client) send(ctx context.Context, op *requestOp, msg interface{}) error {
  	select {
  	case c.reqInit <- op:
  		err := c.write(ctx, msg)
  		c.reqSent <- err
  		return err
  	case <-ctx.Done():
  		// This can happen if the client is overloaded or unable to keep up with
  		// subscription notifications.
  		return ctx.Err()
  	case <-c.closing:
  		return ErrClientQuit
  	}
  }
docs: // send registers op with the dispatch loop, then sends msg on the connection.
  // if sending fails, op is deregistered.