allow os.Signal to be specified and an extra channel for cancellation