func (scc *signalContext) Done() <-chan struct{} {
	return scc.stopCh
}
Done implements context.Context
package signals
import (
	"context"
	"errors"
	"os"
	"os/signal"
	"time"
)
var onlyOneSignalHandler = make(chan struct{})
func SetupSignalHandler() (stopCh <-chan struct{}) {
	close(onlyOneSignalHandler)  
	stop := make(chan struct{})
	c := make(chan os.Signal, 2)
	signal.Notify(c, shutdownSignals...)
	go func() {
		<-c
		close(stop)
		<-c
		os.Exit(1)  
	}()
	return stop
}
func NewContext() context.Context {
	return &signalContext{stopCh: SetupSignalHandler()}
}
type signalContext struct {
	stopCh <-chan struct{}
}
func (scc *signalContext) Deadline() (deadline time.Time, ok bool) {
	return
}