func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
	ctx, f := context.WithCancel(parent)
	return ctx, CancelFunc(f)
}
WithCancel returns a copy of parent with a new Done channel. The returned
context's Done channel is closed when the returned cancel function is called
or when the parent context's Done channel is closed, whichever happens first.

Canceling this context releases resources associated with it, so code should
call cancel as soon as the operations running in this Context complete.
package context
import (
	"context"  
	"time"
)
var (
	todo       = context.TODO()
	background = context.Background()
)
var Canceled = context.Canceled
var DeadlineExceeded = context.DeadlineExceeded