Actually it seems I can use the overloaded method for Factory.FromAsync( that takes an IAsyncResult object as the first argument and a callback method as the second:
result = Task.Factory.FromAsync(
instance.BeginGetMyNumber("foo", "bar", "bat", 1, null, null),
instance.EndGetMyNumber);