code: func (h *Handler) deleteBucket() error {
  	// first, list and delete all the objects in the bucket
  	out, err := h.client.ListObjectVersions(&s3.ListObjectVersionsInput{
  		Bucket: aws.String(h.Bucket),
  	})
  	if err != nil {
  		return ConvertS3Error(err)
  	}
  	for _, ver := range out.Versions {
  		_, err := h.client.DeleteObject(&s3.DeleteObjectInput{
  			Bucket:    aws.String(h.Bucket),
  			Key:       ver.Key,
  			VersionId: ver.VersionId,
  		})
  		if err != nil {
  			return ConvertS3Error(err)
  		}
  	}
  	_, err = h.client.DeleteBucket(&s3.DeleteBucketInput{
  		Bucket: aws.String(h.Bucket),
  	})
  	return ConvertS3Error(err)
  }
docs: // delete bucket deletes bucket and all it's contents and is used in tests