Extension Chrome: comment passer ArrayBuffer ou Blob à partir du contenu du script à l'arrière-plan sans perdre son type?

J'ai ce contenu script qui télécharge des données binaires à l'aide XHR, qui est envoyé au plus tard à l'arrière-plan de script:

var self = this;
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
  if (this.status == 200) {
     self.data = {
        data: xhr.response,
        contentType: xhr.getResponseHeader('Content-Type')
     };
  }
};
xhr.send();

... later ...
sendResponse({data: self.data});

Après réception de ces données en arrière-plan script, je voudrais former une autre demande XHR qui télécharge ce fichier binaire des données sur mon serveur, donc je n':

var formData = new FormData();
var bb = new WebKitBlobBuilder();
bb.append(data.data);
formData.append("data", bb.getBlob(data.contentType));
var req = new XMLHttpRequest();
req.open("POST", serverUrl);
req.send(formData);

Le problème est que le fichier téléchargé vers le serveur contient cette chaîne: "[object object]". Je suppose que cela se produit parce que ArrayBuffer type est un peu perdu pendant le transfert à partir du contenu du processus à l'arrière-plan? Comment puis-je résoudre ce problème?