code: func (db *Database) Send(ctx context.Context, q Runnable) (Response, error) {
  	if q == nil {
  		return &response{}, nil
  	}
  
  	req, err := http.NewRequest(
  		q.Method(),
  		fmt.Sprintf("%s/_db/%s%s", db.endpoint, db.dbName, q.Path()),
  		bytes.NewBuffer(q.Generate()),
  	)
  	if err != nil {
  		return nil, withMessage(err, "the http request generation failed")
  	}
  
  	if err := db.auth.Apply(req); err != nil {
  		return nil, withMessage(err, "authentication returned an error")
  	}
  
  	res, err := db.sender.Send(ctx, db.cli, req)
  	if err != nil {
  		return nil, err
  	}
  	if res.parsed.Error {
  		err = withMessage(errors.New(res.parsed.ErrorMessage), "the database execution returned an error")
  		err = withErrorNum(err, res.parsed.ErrorNum)
  	}
  	if res.statusCode < 200 || res.statusCode >= 300 {
  		if err == nil {
  			err = fmt.Errorf("the database HTTP request failed: status code %d", res.statusCode)
  		}
  		err = withStatusCode(err, res.statusCode)
  	}
  	if err != nil {
  		// We also return the response in the case of a database error so the user
  		// can eventually do something with it
  		return res, err
  	}
  
  	return res, nil
  }
docs: // Send runs the Runnable and returns a "raw" Response object.