Passing in onActionCallback to continuation so if the inner completes camputes the result it will call back to the passed in function (avoids threads locking or spining)
Checking completes if the inner completes has a results before registering a new continuation
Before running registered continuation we check if next can be executed based on the previous continuation result