async and sync spectate assign common does() function