Como cancelar uma chamada assíncrona do WCF?

Estou tentando há algum tempo descobrir como implementar o cancelamento de chamada WCF com base no novo mecanismo .NET 4.5 CancellationToken. Todas as amostras que encontrei não são baseadas no WCF e não cruzam o limite do serviço.

Meu serviço:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class MyService : IMyService
{   
    public void LongOperation()
    {
        // do stuff that takes ages...
        // please cancel me!
    }
}
Meu cliente (aplicativo de desktop):

Usando um proxy gerado automaticamente:

private async void DoLongRunningTaskAsync()
{
    var asyncTask = _myService.LongOperationAsync();
    await asyncTask;
}

Como cancelo esta tarefa? Forneça um exemplo concreto aplicável ao WCF no .NET 4.5+

EDITAR:

As respostas abaixo parecem indicar que isso é impossível por razões técnicas. Então, imagine, eu faço meu serviçoContextMode=Session, defina uma variável estática (em uma chamada de serviço separada) chamadacancellationPending=true, minha chamada original ainda está sendo executada nesse estágio e verifica periodicamente essa variável. Ainda não seria possível cancelar? ainda seria impossível? se sim, por que?

questionAnswers(3)

yourAnswerToTheQuestion