anchor.diff:                   socket=Socket,
                    transport=Transport,
                    buffer=Buffer}=Rq,
  -       #req_state{dir=Dir}=St) ->
  +       St) ->
       {Length, Rq2} = cowboy_http_req:parse_header('Content-Length', Rq),
  -    case ?BACKEND:obj_recv(Dir, Bucket, Path,
  -                           Transport, Socket, Buffer, Length) of
  +    Bridge = bkss_transport:new(bksw_socket_transport,
  +                                [Transport, Socket, ?TIMEOUT_MS]),
  +    case bookshelf_store:obj_recv(Bucket, Path, Bridge, Buffer, Length) of
           {ok, Digest} ->
               OurMd5 = bookshelf_format:to_hex(Digest),
               case cowboy_http_req:parse_header('Content-MD5', Rq2) of
  
positive.code: %% permissions and limitations under the License.
  
  -module(bookshelf_obj).
  -include("bookshelf.hrl").
  -include_lib("cowboy/include/http.hrl").
  
  -compile(export_all).
  
  %% ===================================================================
  %%                              Cowboy
  
negative.code: %%                         Cowboy HTTP REST
  %% ===================================================================
  
  rest_init(Rq, _Opts) ->
      %% We dont actually make use of state here at all
      {ok, bookshelf_req:with_amz_request_id(Rq), undefined}.
  
  allowed_methods(Rq, St) ->
      {['HEAD', 'GET', 'PUT', 'DELETE'], Rq, St}.
  