preserve stack trace while rethrowing exceptions
prepare the request outside the big global lock
removed DataSource (reflection one)