func (r *Request) PATCH(url string) *Request {
	return r.
		use(Method{Data: "PATCH"}).
		use(URL{Data: url})
}
PATCH use PATCH method and http url
package request
import (
	originContext "context"
	"crypto/tls"
	"net/http"
	"github.com/monaco-io/request/context"
	"github.com/monaco-io/request/response"
)
type Request struct {
	ctx *context.Context
}
func (r *Request) use(p Plugin) *Request {
	p.Apply(r.Ctx())
	return r
}
func New() *Request {
	return &Request{ctx: context.New()}
}
func NewWithContext(ctx originContext.Context) *Request {
	return &Request{ctx: context.NewWithContext(ctx)}
}
func (r *Request) Error() error {
	return r.ctx.Error()
}
func (r *Request) Ctx() *context.Context {
	return r.ctx
}
func (r *Request) POST(url string) *Request {
	return r.
		use(Method{Data: "POST"}).
		use(URL{Data: url})
}
func (r *Request) GET(url string) *Request {
	return r.
		use(Method{Data: "GET"}).
		use(URL{Data: url})
}
func (r *Request) PUT(url string) *Request {
	return r.
		use(Method{Data: "PUT"}).
		use(URL{Data: url})
}
func (r *Request) DELETE(url string) *Request {
	return r.
		use(Method{Data: "DELETE"}).
		use(URL{Data: url})
}
func (r *Request) OPTIONS(url string) *Request {
	return r.
		use(Method{Data: "OPTIONS"}).
		use(URL{Data: url})
}
func (r *Request) HEAD(url string) *Request {
	return r.
		use(Method{Data: "HEAD"}).
		use(URL{Data: url})
}
func (r *Request) TRACE(url string) *Request {
	return r.
		use(Method{Data: "TRACE"}).
		use(URL{Data: url})
}