more tests passing; added session-level promise cache