should probably fold this into the then(), so we only create one promise