func timeoutAndMoveOn(fp loiterFunc, timeout time.Duration) {
	ch := time.After(timeout)
	for {
		select {
		case <-ch:
			return
		default:
			fp()
		}
	}
}
func timeoutAndMoveOn(fp loiterFunc, timeout time.Duration) {
	ch := time.After(timeout)
	for {
		select {
		case <-ch:
			return
		default:
			fp()
		}
	}
}
// timeoutAndMoveOn executes the long running function pointed to by 'fp' and
// times out after 'timeout' duration.