add async usage in client part instead use the lock