Convertir Blob a cadena binaria sincrónicamente

Estoy tratando de poner la imagen en el portapapeles cuando el usuario copia la selección del lienzo:

Así que pensé que la forma correcta sería convertir el lienzo tu dataURL, dataURL a blob y blob a cadena binaria.

Teóricamente debería ser posible omitir el blob, pero no sé por qué.

Entonces esto es lo que hice:

  function copy(event) {
    console.log("copy");
    console.log(event);

    //Get DataTransfer object
    var items = (event.clipboardData || event.originalEvent.clipboardData);
    //Canvas to blob
    var blob = Blob.fromDataURL(_this.editor.selection.getSelectedImage().toDataURL("image/png"));
    //File reader to convert blob to binary string
    var reader = new FileReader();
    //File reader is for some reason asynchronous
    reader.onloadend = function () {
      items.setData(reader.result, "image/png");
    }
    //This starts the conversion
    reader.readAsBinaryString(blob);

    //Prevent default copy operation
    event.preventDefault();
    event.cancelBubble = true;
    return false;
  }
  div.addEventListener('copy', copy);

Pero cuando elDataTransfer objeto se utiliza fuera de lapaste hilo del eventosetData ya no tiene ninguna posibilidad de hacer efecto.

¿Cómo puedo hacer la conversión en el mismo hilo de función?

Respuestas a la pregunta(2)

Su respuesta a la pregunta