As I think about it there is one scenario that can go wrong here:

1. One worker checks that destination cache doesn't exist and begins copying from tmp
2. Second worker checks that destination exists and returns cache location
3. While first worker have not finished moving tmp to cache, second worker copies cache to bower_components, copying only half of files or so.

This is given bower doesn't wait for all downloads to be finished before copying them to bower_components. If bower first resolves all downloads and only then copies to bower_components, it is not a problem.

If it doesn't wait, the solution is to use write lock at all times and remove this line.