'Get an ``IBlockDeviceAsyncAPI`` provider which can manipulate volumes
for this deployer.
During real operation, this is a threadpool-based wrapper around the
``IBlockDeviceAPI`` provider.  For testing purposes it can be
overridden with a different object entirely (and this large amount of
support code for this is necessary because this class is a ``PClass``
subclass).'

@property
def async_block_device_api(self):

    if (self._async_block_device_api is None):
        return _SyncToThreadedAsyncAPIAdapter.from_api(self.block_device_api)
    return self._async_block_device_api
