         if err
             opts.cb(err)
         else
-            S.new_browser_client opts.session_id, opts.push_to_client, (err, client) ->
-                if err
-                    opts.cb(err)
-                else
-                    opts.cb(undefined, client)
+            S.new_browser_client
+                session_id     : opts.session_id
+                push_to_client : opts.push_to_client
+                cb             : (err, client) ->
+                    if err
+                        opts.cb(err)
+                    else
+                        opts.cb(undefined, client)
 
 # The hub has to call this on startup in order for syncstring to work.
 syncstring_db = undefined

            # not watching for anything
            retry(interval); return

        @read_updates_from_db misc.keys(@strings), TIMESTAMP_OVERLAP, (err, new_updates) =>
            if err
                retry(interval)
            else
                if new_updates
                    # something new -- poll again soon
                    retry(0)
                else
                    # nothing new -- try again after further exponential decay
                    retry(interval)

    sync: (cb) =>
        @_call_with_lock(@_write_updates_to_db, cb)

    S = new SynchronizedString(string_id)
    async.series([
        (cb) =>
            S.new_database_client
                session_id : misc.uuid()
                cb : (err, client) ->
                    if err
                        cb(err)
                    else
                        S.db_client = client
                        S.head = client.live
                        client.on 'change', S.sync  # whenever database changes, sync everything
                        cb()
        (cb) =>
            S.new_in_memory_client
                session_id : misc.uuid()
                cb         : (err, client) ->
                    if err
                        cb(err)
                    else
                        S.in_memory_client = client
                        cb()
    ], (err) =>
        if err
            # TODO: undo any other harm
