package aws | |
import ( | |
"time" | |
) | |
// SleepWithContext will wait for the timer duration to expire, or the context | |
// is canceled. Which ever happens first. If the context is canceled the Context's | |
// error will be returned. | |
// | |
// Expects Context to always return a non-nil error if the Done channel is closed. | |
func SleepWithContext(ctx Context, dur time.Duration) error { | |
t := time.NewTimer(dur) | |
defer t.Stop() | |
select { | |
case <-t.C: | |
break | |
case <-ctx.Done(): | |
return ctx.Err() | |
} | |
return nil | |
} |