Split _open() to allow request customization