Looking at Shape#draw() again, there is actually only one optional parameter--the transformation. The surface is actually required; if you want to draw to the backbuffer, you just pass screen (which is a Surface). So it should actually be okay the way it is.
One thing I want to highlight is the new RNG API. I mentioned it in the minisphere thread, but didn't really go into detail on it. Here's the API:
https://github.com/fatcerberus/minisphere/blob/master/docs/spherical-api.txt#L177-L221
It's based on the xoroshiro128+ generator and allows you to create multiple independently seeded random number generators. Each RNG object exposes a state property which lets you save and restore the current position of that generator in its sequence. This can be used to prevent save system abuse ("save scumming"). For example you could have an RNG which is used to determine the contents of random chests. The state of this one would be stored in your save file so that you can't reload to get a different item.
Likewise, having independent generators is useful for preventing abuse. A common exploit in older games is to generate a certain number of values before the action you wanted to manipulate in order to get a desired result. By creating independent RNGs, this exploit can be mitigated, as the state of the RNG for item drops doesn't have to be affected by the one that determines, e.g. AI attacks.
For games which don't need this level of control over the RNG, the standard library provides the random module:
const random = require('random');
// 25% chance this is true
console.log(random.chance(0.25));
// integer [1,10]
console.log(random.discrete(1, 10));
// expected value 1000, std. dev. 50
console.log(random.normal(1000, 50));
// 10 alphanumeric characters
console.log(random.string(10));
// one of: pig, cow, ape
var array = [ "pig", "cow", "ape" ];
console.log(random.sample(array));