api consistency between acquire and release, adds an optional callback function