optional caller blocking via timeout parameter