this recursion with promise usage seems strange, something seems wrong. Or maybe just the lengthy chain seems uneeded.