async def async_poller(client, initial_response, deserialization_callback, polling_method):
    """Async Poller for long running operations.

    :param client: A pipeline service client.
    :type client: ~azure.core.PipelineClient
    :param initial_response: The initial call response
    :type initial_response: ~azure.core.pipeline.transport.AsyncHttpResponse
    :param deserialization_callback: A callback that takes a Response and return a deserialized object.
                                     If a subclass of Model is given, this passes "deserialize" as callback.
    :type deserialization_callback: callable or msrest.serialization.Model
    :param polling_method: The polling strategy to adopt
    :type polling_method: ~azure.core.polling.PollingMethod
    """

    # This implicit test avoids bringing in an explicit dependency on Model directly
    try:
        deserialization_callback = deserialization_callback.deserialize
    except AttributeError:
        pass

    # Might raise a CloudError
    polling_method.initialize(client, initial_response, deserialization_callback)

    await polling_method.run()
    return polling_method.resource()