expose request timing; add tests