Iwillig/xhr promise

@bcamper 

Not sure why, but FF seems to require a specific order of operations here, see: 2de45bcacc815e48f8368f52a78b5f9278a2bf5d