code: func (q *SQSDispatcher) extendMessageVisibilityTimeout(receiptHandle *string) (<-chan time.Time, error) {
  	visibilityTimeout := int64(float64(q.VisibilityHeartbeat) / float64(time.Second))
  
  	_, err := q.sqs.ChangeMessageVisibility(&sqs.ChangeMessageVisibilityInput{
  		QueueUrl:          aws.String(q.QueueURL),
  		ReceiptHandle:     receiptHandle,
  		VisibilityTimeout: aws.Int64(visibilityTimeout),
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	return q.after(q.VisibilityHeartbeat / 2), nil
  }
docs: // extendMessageVisibilityTimeout extends the messages visibility timeout by
  // VisibilityHeartbeat, and returns a channel that will receive after half of
  // VisibilityTimeout has elapsed.