server: graceful failure if backend  API request takes too long

not very DRY, but going to merge