     fails = []
 
     @emailAddressSubmit.showLoader()
-    async.map emails, (email, callback) ->
-      KD.remote.api.JReferrableEmail.invite email, (err) ->
-        fails.push email if err
-        callback()
-    , =>
+    Promise.all(
+      emails.map (email) ->
+        new Promise (resolve, reject)->
+          KD.remote.api.JReferrableEmail.invite email, (err) ->
+            fails.push email if err
+            resolve()
+    ).then =>
       @errorMessage.hide()
       @emailAddressSubmit.hideLoader()
 

class LandingView extends JView
  constructor: (options = {}, data) ->
    options.cssClass = KD.utils.curry "landing-view", options.cssClass
    super options, data

        diameter  : 24
      callback    : =>
        @emailAddressSubmit.hideLoader()
        return  if @emailAddressInput.getValue() is ""
        @requireLogin @bound "submitEmailAddresses"

    @invitationSentButton = new KDButtonView
      style : "invitations-sent hidden"
