When the HTTP server failed to initialise, for example because the listen address was already in use, rclone panicked with a nil pointer dereference instead of reporting the error. The deferred cleanup in the constructor read the provider from the named return value, but `return nil, err` sets that to nil before the deferred function runs. Use a local variable for the server instead.