var prefs = new (require('shared/prefs.js').Prefs);
var ext = require('shared/ext.js');
var backend = require('shared/backend.js');
var global = this;

var backendCode = backend.getCode();

parent.postMessage({
  PromisesWorker: true,
  action: 'backend_code',
  message: {
    code: backendCode
  }
}, '*');
  }

  return obj;
};

var buildProgressListener = function(obj, methods) {
  var listener = buildProgressQI({});

  Object.keys(methods).forEach((key) => {
    listener[key] = methods[key].bind(obj);
  });

  return listener;
};

let promisesBackendCode = backend.getCode();

var PromisesPanel = function(window, toolbox) {
  this.toolbox = toolbox;
  this.panelWindow = window;
  this.target = toolbox.target;
  this.webProgress = this.target.tab.linkedBrowser.webProgress;
  // this.inspectedWindow = this.webProgress.DOMWindow;


  this.waitUICommands();

  if (this.isDebuggerAttached()) {
    this.UIAction('show_not_attached');
  } else {
    this.waitAttachRequest();