Optimize out key.exists() call

Also try to retain the advantage that the error message returned when
a 404 is encountered still avoids the annoying gevent-instigated stack
trace.  This is done by converting exceptions into return values
rather than raising them to the top of the greenlet.