     attachFiles = []
     await
       for filename, revision of usedFiles
-        if typeof files[filename] == 'function'
-          file = files[filename]()
-          ## Assume file created by same person and roughly same time
-          ## as the first post that contains them.  OSQA doesn't seem to
-          ## keep any record of files, so that's the best we can do.
-          file.creator = revision.updators[0]
-          file.created = revision.updated
-          file.group = group
-          do (d = defer files[filename]) ->
-            file.callback = (file2) ->
-              attachFiles.push file2
-              d file2.uniqueIdentifier
-          Files.resumable.addFile file
+        #if typeof files[filename] == 'function'
+        #  await files[filename] defer file
+        file = files[filename]
+        ## Assume file created by same person and roughly same time
+        ## as the first post that contains them.  OSQA doesn't seem to
+        ## keep any record of files, so that's the best we can do.
+        file.creator = revision.updators[0]
+        file.created = revision.updated
+        file.group = group
+        do (d = defer files[filename]) ->
+          file.callback = (file2) ->
+            attachFiles.push file2
+            d file2.uniqueIdentifier
+        Files.resumable.addFile file
 
     for revision in revisions
+      revision.body ?= ''
       revision.body = revision.body.replace upfile_url, (match, p1) ->
         if p1 of files
           urlToInternalFile files[p1]


  files = {}
  for content in zip.file /^upfiles\//
    filename = content.name[8..]
    continue unless filename.length > 0
    continue if filename == 'README'  ## extra file
    dot = filename.lastIndexOf '.'
    if dot >= 0
      ext = filename[dot..].toLowerCase()
    else
      ext = ''
    if ext not of ext2type

    ## JSZip's ZipObjects don't seem to behave enough like a File.
    #content.type = ext2type[ext]
    #files[filename] = content
    #do (basename, filename, content, type = ext2type[ext]) ->
    await zip.file(filename).async('arraybuffer').then defer buffer
    files[basename] = new File [buffer], basename,
      type: type
      lastModified: content.date

  await zip.file('users.xml').async('string').then defer users
  users = parseXML users
