retain the arc resource until the async operation is completed

much better than previous implementation which was retaining the object at the
arc level just looking at the async flag