def post(path:, headers:, body:, delegate:, context: nil)
      request("POST", path, headers, body, delegate, context)
    end
def post(path:, headers:, body:, delegate:, context: nil)
      request("POST", path, headers, body, delegate, context)
    end
Sends the provided data as a `POST` request to the service.

 @note   It is strongly advised that the delegate object is a Celluloid actor and that you pass in an async proxy
         of that object, but that is not required. If you do not pass in an actor, then be advised that the
         callback will run on this connection’s private thread and thus you should not perform long blocking
         operations.

 @param  [String] path
         the request path, which should be `/3/device/<device-token>`.

 @param  [Hash] headers
         the additional headers for the request. By default it sends `:method`, `:path`, and `content-length`.

 @param  [String] body
         the (JSON) encoded payload data to send to the service.

 @param  [DelegateProtocol] delegate
         an object that implements the delegate protocol.

 @param  [Object, nil] context
         any object that you want to be passed to the delegate once the response is back.

 @return [void]