Iwillig/xhr promise

@bcamper 

I think this is the case where the tile was already "removed" before the XHR request came back. If we go back to canceling XHR requests, then this shouldn't happen... but there should probably still be something to catch it as a fallback.