         started: (req) =>
           @_progress.add(targetPath, size, req)
         timeout: 20 * 60 * 1000
+      )
+      .then((file) =>
+        @draft.files.push(file)
+      )
       .finally =>
         @_progress.remove(targetPath)
-      .then (file) =>
-        @draft.files.push(file)
 
   _sendAndCreateMessage: =>
     NylasAPI.makeRequest

class SendDraftTask extends Task

  constructor: (@draft, @uploads) ->
    @_progress = new MultiRequestProgressMonitor()
    Object.defineProperty(@, 'progress', { get: -> @_progress.value() })
    super

  label: ->

    .catch(@_onError)

  _uploadAttachments: =>
    @_progress = new MultiRequestProgressMonitor()
    Object.defineProperty(@, 'progress', { get: -> @_progress.value() })

    Promise.all @uploads.map ({targetPath, size}) =>
      NylasAPI.makeRequest(
        path: "/files"
        accountId: @draft.accountId
        method: "POST"
